Python:将 lambda 函数附加到列表 [重复]
Posted
技术标签:
【中文标题】Python:将 lambda 函数附加到列表 [重复]【英文标题】:Python: Append lambda functions to list [duplicate] 【发布时间】:2013-12-30 10:37:34 【问题描述】:任何人都可以进行完整性检查吗?
我正在尝试在 for 循环中创建函数。 看不懂的点总结在下面的代码中:
f_list = []
for i in range(10):
f = lambda j : i
f_list.append(f)
那么,
>>> f_list[0](0)
9 #I hope this is 0.
>>> f_list[1](0)
9 #I hope this is 1.
为什么会这样??
【问题讨论】:
感谢您指出过去的问题/答案。是的,这实际上是它们的复制品。 【参考方案1】:编辑:几乎相同的问题已经在 *** 中讨论过,here。
这是因为 python 的闭包属性。为了得到你真正需要的东西,你需要这样做
f = lambda j, i = i : i
所以,这个程序的输出变成了这样
f_list = []
for i in range(5):
f = lambda j, i = i : i
f_list.append(f)
for i in range(5):
print f_list[i](0)
输出
0
1
2
3
4
【讨论】:
感谢您的简单回答。我明白这一点。以上是关于Python:将 lambda 函数附加到列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章