我想生成一个类似于这个简化示例的lambda函数族:
fns = [(lambda x: x == y) for y in range(10)]
我从中得到的结果确实是10个函数的列表。但是,所有10个似乎都有y绑定到9,这是序列的最后一个值。例如
[fns[i](9) for i in range(10)] --> [True, True, True, True, True, True, True, True, True, True]
fns[0](0) --> False
为什么这不起作用,什么是干净的解决方法?
我在Python 2.7和3.3中尝试过这个。
答案 0 :(得分:1)
由于评论而编辑。
>>> fns = [(lambda x,y = y: x == y) for y in range(10)]
>>> map(lambda x: x(1), fns)
[False, True, False, False, False, False, False, False, False, False]