生成lambda函数族

时间:2014-02-12 06:38:23

标签: python

我想生成一个类似于这个简化示例的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中尝试过这个。

1 个答案:

答案 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]