【发布时间】:2013-10-31 02:26:19
【问题描述】:
我想要一个函数来返回列表中每个数字的方程值。我有一个包含 24 个参数的列表,我需要为这个列表的每个值求解一个方程。
这是我获取列表的方式:
wlist=[]
def w(i):
for i in range(24):
Calctruesolar=((i*60/1440)*1440+eq_time()+4*long-60*timezone)%1440
if Calctruesolar/4<0:
Calcw=(Calctruesolar/4)+180
wlist.append(Calcw)
print(Calcw)
else:
Calcw=(Calctruesolar/4)-180
wlist.append(Calcw)
print(Calcw)
那么,列表就是这个:
>>> wlist=
[166.24797550450222, -178.75202449549778, -163.75202449549778, -148.75202449549778, -133.75202449549778, -118.75202449549778, -103.75202449549778, -88.75202449549778, -73.75202449549778, -58.75202449549778, -43.75202449549778, -28.75202449549778, -13.752024495497778, 1.2479755045022216, 16.24797550450222, 31.24797550450222, 46.24797550450222, 61.24797550450222, 76.24797550450222, 91.24797550450222, 106.24797550450222, 121.24797550450222, 136.24797550450222, 151.24797550450222]
现在,我使用下一个函数:
def hourly_radiation(wlist):
for i in wlist:
Calcrt=(math.pi/24)*(a()+b()*math.cos(math.radians(i)))*((math.cos(math.radians(i)))-math.cos(math.radians(wss())))/(math.sin(math.radians(wss()))-((math.pi*wss()/180)*math.cos(math.radians(wss()))))
CalcI=Calcrt*radiation
print(Calcrt,CalcI)
所以,我想为列表中的每个值接收Calcrt 和CalcI。但它不起作用。我一直在互联网和教程中寻找信息,但我没有找到任何东西。
【问题讨论】:
-
描述它是如何不起作用的。
-
为什么不在函数内部创建列表并在末尾添加
return wlist?您也可以只有一个函数来解决一个方程并在列表理解中调用它:[w(el) for el in data]。 -
@user2882337 可能是因为
wlist为空。您确实在hourly_radiation之前致电w(i)对吗? -
看看 PEP8 风格指南
-
顺便说一句,w() 方法中的
i参数实际上并没有被使用,被for i in循环所掩盖。