【问题标题】:Can I get a List of functions using filter in Python? [duplicate]我可以在 Python 中使用过滤器获取函数列表吗? [复制]
【发布时间】:2013-08-01 09:22:13
【问题描述】:

我有一个包含 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

那么我怎样才能得到正确的函数列表呢?

【问题讨论】:

    标签: python list lambda


    【解决方案1】:

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

    F =  [lambda x, k=k:k+x for k in filter(lambda x: 10 % x == 0, range(1, 10))]
    
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    相关资源
    最近更新 更多