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 函数附加到列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python - 将函数附加到列表[重复]

如何使用 Cloudformation 将 lambda 函数附加到现有 API 网关

将项目附加到字典 Python

Paramiko连接在Lambda内失败

从 lambda 分配给 Python 列表的一部分

将列表元素附加到python中的列表列表