我可以在Python中使用过滤器获取函数列表吗?

时间:2013-08-01 09:22:13

标签: python list lambda

我有一个列表,其除数为10,如下所示:

print filter(lambda x: 10 % x == 0, range(1, 10))
>>>[1, 2, 5]

然后我需要一个像这样的函数列表:

F =  [lambda x:k+x for k in filter(lambda x: 10 % x == 0, range(1, 10))]

当我调用List中的每个函数时,结果证明是错误的:

for f in F:
   print(f(0))
>>> 5
>>> 5
>>> 5

所以如何获得正确的功能列表?

1 个答案:

答案 0 :(得分:1)

lambda函数捕获变量k。要绕过它,您可以将其复制到lamba函数的本地变量:

F =  [lambda x, k=k:k+x for k in filter(lambda x: 10 % x == 0, range(1, 10))]