This question already has answers here:
Python lambda doesn't remember argument in for loop [duplicate]
(3个答案)
已关闭6年。
我努力使 lambdas 工作。这里的代码是示例,但它很好地显示了我的问题。
这给了我 16,但我希望对不同的 lambda 有不同的值(value)。为什么会发生!
改用:
这将产生:
这是有效的,因为作为一种特殊情况,函数的默认参数(如上面的
(3个答案)
已关闭6年。
我努力使 lambdas 工作。这里的代码是示例,但它很好地显示了我的问题。
lambdas = list()
for i in range(5):
lambdas.append(lambda x:i*i*x)
print lambdas[0](1)
print lambdas[2](1)
这给了我 16,但我希望对不同的 lambda 有不同的值(value)。为什么会发生!
最佳答案
在这段代码中:
for i in range(5):
lambdas.append(lambda x:i*i*x)
i
的值是在函数运行时确定的。函数定义时 i
的值丢失。改用:
lambdas = list()
for i in range(5):
lambdas.append(lambda x, i=i : i*i*x)
print lambdas[0](1)
print lambdas[2](1)
这将产生:
0
4
这是有效的,因为作为一种特殊情况,函数的默认参数(如上面的
i=i
中)会立即绑定(bind)。关于python - 为什么我的 lambdas 不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29245710/
10-12 18:41