Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python-如何使用lambda函数按列表中所有元素的倍数过滤列表?_Python 3.x_Lambda_Filter_Generator - Fatal编程技术网

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])]