**基于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个元素。
答案 0 :(得分:1)
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)
答案 1 :(得分:0)
您尝试返回多个值,但没有使用正确的语法。试试这个:
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)
答案 2 :(得分:0)
我认为最好像您先做的那样为计算定义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:我假设您要传递的25
是一个T值示例。在shortcuit_current()
中完成计算后,它将始终返回0