使用具有多个函数和条件运算符的python过滤器

时间:2018-10-30 04:45:13

标签: lambda filter python-3.6

我对通过具有适当的“和”和“或”运算符的几个函数过滤一组数字感兴趣。例如,我编写了以下代码来过滤所有以7结尾的素数:

is_prime = lambda x : all([x%j for j in range(2,x)])
ends_with_7 = lambda x : x % 10 == 7

primes_ending_with_7 = list(filter(is_prime and ends_with_7, range(1, 200)))
print(primes_ending_with_7)

它产生了以下输出,显然是错误的:

[7, 17, 27, 37, 47, 57, 67, 77, 87, 97, 107, 117, 127, 137, 147, 157, 167, 177, 187, 197]

我可能会如下将两个lambda折叠成一个并获得所需的结果:

is_prime7 = lambda x : all([x%j for j in range(2,x)]) and x % 10 == 7

但是,它扼杀了将 ends_with_7 保留为独立功能的目的。有没有办法让功能本身保持可用,并通过逻辑组合它们来应用过滤器?

0 个答案:

没有答案