2

我有一个列表,其中包含 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))]

当我调用列表中的每个函数时,结果是错误的:

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

那么如何获得正确的功能列表?

4

1 回答 1

1

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

F =  [lambda x, k=k:k+x for k in filter(lambda x: 10 % x == 0, range(1, 10))]
于 2013-08-01T09:26:16.373 回答