【发布时间】:2020-02-16 18:02:56
【问题描述】:
我有以下代码:
a = [2, 4]
b = list(range(1,10))
print(list(filter((lambda x: (x % f == 0) for f in a), b)))
我的目标是回来:
[4, 8]
相反,我得到:
TypeError: 'generator' object is not callable
这是因为 4 和 8 之间同时除以 2 和 4。(我试图让我的代码工作,而不是解决具体问题,我知道我可以使用 4 并快速解决它。)谢谢这么多!
【问题讨论】:
-
因为您使用
list意味着您正在评估创建的filter对象,所以最好使用列表推导,即[i for i in b if all([i%j==0 for j in a])]
标签: python-3.x lambda filter generator