2

我想要一个函数来返回列表中每个数字的等式值。我有一个包含 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)

所以,我想接收列表CalcrtCalcI的每个值。但它不起作用。我一直在互联网和教程中寻找信息,但我没有找到任何东西。

4

1 回答 1

0

尝试这个:

def hourly_radiation(wlist):
    rt_list = []
    I_list = []
    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
        rt_list.append(Calcrt)
        i_list.append(CalcI)
        print(Calcrt,CalcI)
    dict = {}
    dict["Calcrt"] = rt_list
    dict["CalcI"] = i_list
    return dict

这会将值作为包含两个列表的字典返回。您可以使用任何符合您要求的数据结构。

您还可以在每个循环运行中创建一个元组并将其附加到一个列表并返回它,例如:

def hourly_radiation(wlist):
    rt_list = []
    data = ()
    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
        data = (Calcrt, CalcI)
        print(Calcrt, CalcI)
        rt_list.append(data)
    return rt_list

我没有运行或测试过这段代码,但我希望它可以工作。

请将此作为起点,而不是作为复制粘贴解决方案。

于 2013-10-22T09:43:47.017 回答