我有一个列表,其除数为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
所以如何获得正确的功能列表?
答案 0 :(得分:1)
lambda函数捕获变量k
。要绕过它,您可以将其复制到lamba函数的本地变量:
F = [lambda x, k=k:k+x for k in filter(lambda x: 10 % x == 0, range(1, 10))]