Python 3.x 如何通过python3中的for_循环创建许多不同的lambda函数?

Python 3.x 如何通过python3中的for_循环创建许多不同的lambda函数?,python-3.x,function,for-loop,lambda,Python 3.x,Function,For Loop,Lambda,我尝试通过以下代码创建不同的函数: a = [] for i in range(5): a.append(lambda: i) print(a) 它表明: [<function <lambda> at 0x008DA100>, <function <lambda> at 0x008DA0B8>, <function <lambda> at 0x008DA148>, <function <lambda

我尝试通过以下代码创建不同的函数:

a = []

for i in range(5):
    a.append(lambda: i)

print(a)
它表明:

[<function <lambda> at 0x008DA100>, <function <lambda> at 0x008DA0B8>, <function <lambda> at 0x008DA148>, <function <lambda> at 0x008DA190>, <function <lambda> at 0x008DA1D8>]

请告诉我如何解决此问题。

lambda都返回4的原因是因为它们都引用相同的变量-
i
。循环结束后,
i
的值为4。由于lambda是在调用时执行的,因此所有lambda都计算相同的表达式:
i
&因此得到相同的结果

为了解决这个问题,您需要将i的值绑定为lambda创建的时间。为此,可以使用具有默认值的单参数lambda:

a = []

for i in range(5):
    a.append(lambda x=i: x)

print(a[0]())
其中:

0

正如所料。

可能与循环中的
lambda:a
有关-而不是
lambda:i
,抱歉,这只是一个输入错误。实际上是兰博达:噢!对这是个好主意。塔克斯。
0