Python:将lambda函数附加到lis

2024-04-27 23:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能做精神检查吗?

我正在尝试使函数循环。 下面的代码总结了我无法理解的一点:

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.

为什么会这样??


Tags: lambda函数代码in精神forisrange
1条回答
网友
1楼 · 发布于 2024-04-27 23:37:25

编辑:Stackoverflow,here中已经讨论了几乎相同的问题。

这是因为python的closure属性。为了得到你真正需要的,你需要这样做

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

相关问题 更多 >