这个问题在这里已经有了答案:
Dictionary With Lambda Values Updates All Entries
(1 个回答)
3年前关闭。
a = [] a.append(lambda x:x**0)
a.append(lambda x:x**1)
a[0](2), a[1](2), a[2](2)... spits out 1, 2, 4, ...
b=[]
for i in range(4)
b.append(lambda x:x**i)
b[0](2), b[1](2), b[2](2)... spits out 8, 8, 8, ...
在 for 循环中,i 作为变量传递给 lambda,因此当我调用它时,将使用 i 的最后一个值,而不是像使用 a[] 那样运行代码。 (即 b[0] 应该使用 x^1,b[1] 应该使用 x^2,...)
我如何告诉 lambda 获取 i 的值而不是变量 i 本身。
最佳答案
丑陋,但一种方式:
for i in range(4)
b.append(lambda x, copy=i: x**copy)
你可能更喜欢
def raiser(power):
return lambda x: x**power
for i in range(4)
b.append(raiser(i))
(所有代码未经测试。)
关于python - 在 lambda 表达式中使用变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760688/