【问题标题】:Python: Append lambda functions to list [duplicate]Python:将 lambda 函数附加到列表 [重复]
【发布时间】: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.

为什么会这样??

【问题讨论】:

  • 感谢您指出过去的问题/答案。是的,这实际上是它们的复制品。

标签: python lambda append


【解决方案1】:

编辑:几乎相同的问题已经在 Stackoverflow 中讨论过,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

【讨论】:

  • 感谢您的简单回答。我明白这一点。
猜你喜欢
  • 1970-01-01
  • 2020-02-09
  • 2013-06-18
  • 2017-04-16
  • 2015-08-05
  • 2019-09-02
  • 1970-01-01
  • 2018-10-24
  • 2020-02-20
相关资源
最近更新 更多