Python 3.x Python-如何使用lambda函数按列表中所有元素的倍数过滤列表?
我有以下代码:Python 3.x Python-如何使用lambda函数按列表中所有元素的倍数过滤列表?,python-3.x,lambda,filter,generator,Python 3.x,Lambda,Filter,Generator,我有以下代码: 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并快速解决。)非常感谢大家 这是有效的: a = [2, 4
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并快速解决。)非常感谢大家 这是有效的:
a = [2, 4]
b = list(range(1,10))
print(list(filter(lambda x: all(x % f == 0 for f in a), b)))
输出:
[4, 8]
问题是
(lambda x:(x%f==0)对于a中的f)
是一个生成器,而不是一个函数(或者lambda
语句)。因为您使用的是列表
意味着您正在评估创建的过滤器
对象,所以最好使用列表理解,即[i对于b中的i,如果所有([i%j==0对于a中的j])]