append将覆盖lambda函数列表中的所有条目

时间:2016-07-11 16:00:12

标签: python list python-2.7 lambda append

我想创建一个lambda函数列表,我在for循环中创建它并将其附加到列表中。我的问题是append命令似乎覆盖了所有以前的列表条目。

可以使用以下代码重现该问题

func_list = []
for i in range(4):
    func_list.append(lambda x: i)
    print func_list[-1](0)

print '**********'

for f in func_list:
    print f(0)

第一个for循环内的print命令产生预期的输出(0,1,2,3)。但是,第二个for循环为列表的所有元素打印3(3,3,3,3)。

我如何理解这种行为以及如何解决我的问题?

0 个答案:

没有答案