我在网上寻找一个可以用来得到质数的lambda。我找到了这个:
nums = range(2, 100)
for i in range(2, 10):
nums = list(filter(lambda x: x == i or x % i, nums))
print(nums)
我知道x % i
是一个从2到10的数字列表,它可以过滤掉大于10的非质数;令我困惑的是如何将i
列表添加到最终的nums
中。
我相信它可能与x == i
布尔值有关,但我不明白它是如何工作的。
我在网上寻找一个可以用来得到质数的lambda。我找到了这个:
nums = range(2, 100)
for i in range(2, 10):
nums = list(filter(lambda x: x == i or x % i, nums))
print(nums)
我知道x % i
是一个从2到10的数字列表,它可以过滤掉大于10的非质数;令我困惑的是如何将i
列表添加到最终的nums
中。
我相信它可能与x == i
布尔值有关,但我不明白它是如何工作的。
2条答案
按热度按时间cdmah0mi1#
Lambda函数可以用来缩短代码。它们可以与使用至少两行代码的“普通”函数相比较。func将与您的Lambda函数相同:
驱动程序代码:
zdwk9cvp2#
这个lambda函数要检查一个数是否等于2到9之间的数,并且不能被其中任何一个整除。
换句话说,整个程序要过滤的质数列表是从2到99,在循环中,我们只需要检查从2到9的除数,因为如果我们传递到10,我们可以得到
10 * 10 = 100
。