将嵌套列表传递到函数并获取嵌套列表

2024-05-18 14:29:52 发布

您现在位置:Python中文网/ 问答频道 /正文

**根据Marcus.Aurelianus的回答,我修改了问题并执行了以下代码

def Bigfunction(G,T):
    return list(map(lambda x,y:10**-3*x*(1 + (y-25)),G,T)),list(map(lambda x,y:(x/1000)*(1 + (y-25)),G,T)), list(map(lambda x:(x/800),G))
G = list(range(100,1100,100))
T = list(range(25,40,10))
Iph_cal, Isc_cal, Tcel_cal = Bigfunction(G,T)
print(Iph_cal, Isc_cal, Tcel_cal)

**输出为:

[0.07000999999999999, 0.14464065999999998] [0.06999999999999999, 0.14461999999999997] [28.5, 32.0, 35.5, 39.0, 42.5, 46.0, 49.5, 53.0, 56.5, 60.0]

**在输出中:第一个和第二个列表只给出了两个元素。其中第三个列表给出了10个元素,这是正确的。为什么第一个和第二个列表不产生10个元素。你知道吗


Tags: lambda代码元素map列表defrangeisc
3条回答

使用lambdamap函数。你知道吗

def Bigfunction(G,T):
    return list(map(lambda x:0.03*x,G)),list(map(lambda x,y:(x/1000)*(y-25),G,[T]*len(G))), list(map(lambda x:x/800,G))
G = list(range(100,1100,100))
T1, I1, I2 = Bigfunction(G,25)

您试图返回多个值,但没有使用正确的语法。试试这个:

def Bigfunction(G, T):
    return 0.03 * G, (G / 1000) * (T - 25), G / 800


T1 = []
T2 = []
T3 = []
for G in range(100, 1100, 100):
    a, b, c = Bigfunction(G, 25)
    T1.append(a)
    T2.append(b)
    T3.append(c)

我认为最好像前面那样为计算定义3个单独的函数。不过,我会根据他们的工作给他们起更具描述性的名字。这样,您就可以根据需要组合它们,甚至可以从其他模块调用它们。你知道吗

例如:

def solar_current(G):
    return 0.03*G # Solar cell photo current in A

def shorcircuit_current(G,T):
    return (G/1000)*(T-25)  # short circuit current

def f3(G): # Whatever name it describes a bit better what it does.
    return G/800

T1, I1, I2 = [], [], []
for G in range(100, 1100, 100):
    T1.append(solar_current(G))
    I1.append(shortcircuit_current(G, 25))
    I2.append(f3(G))

PS:我假设作为T值传递的25就是一个例子。在shortcuit_current()中完成计算后,它将始终返回0

相关问题 更多 >

    热门问题