我想用一系列参数来定义一系列函数,实际上是由有限数量的单极子和偶极子组成一个势。你知道吗
然而,由于某种原因,python列表中的函数的行为并不像我所期望的那样。你知道吗
以下示例:
def function(coefficients):
phi = []
i = 0
for y in coefficients:
f = lambda x: y*(x**i)
i += 1
phi.append(f)
print f(2)
return phi
> phi = function([1,2,3])
2
8
24
> k0 = phi[0]
> k1 = phi[1]
> k2 = phi[2]
> print k0(2), k1(2), k2(2)
24 24 24
始终检索列表中的最后一个函数,与从列表中选择的函数无关。你知道吗
有什么想法吗?你知道吗
提前谢谢。你知道吗
由于闭包属性,lambda函数保存对变量
y
的引用。因此,所有函数都对同一对象有引用,它们将在调用期间获得最后一个值y
。为了解决这个问题现在,我们已经创建了另一个参数
y
,它具有默认值y
。它使函数现在依赖于本地引用。因此,即使循环中y
的值发生变化,lambda函数也不再引用该y
。你知道吗注:同样的解释也适用于变量
i
。你知道吗为了清楚起见,我建议使用不同的变量名
注意:您最初的输出是
2 8 24
。那是因为,当你调用这个函数时,i
被递增了,我不认为这是你真正想要的。实际输出应该是1 4 12
。你知道吗相关问题 更多 >
编程相关推荐