我在网上找一个可以用来求素数的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
-i
是一个从2到10的数字列表-可以过滤掉大于10的非素数;令我难以置信的是,如何将i
列表添加到最终的nums
中。
我相信这可能与x == i
布尔值有关,但我不明白它是如何工作的。
Lambda-Functions可用于缩短代码。它们可以与"正常"进行比较。使用至少两行代码的函数。函数将与lambda-function相同:
def func(x):
return x == i or x % i
驱动代码:
nums = range(2, 100)
nums_a = []
for i in range(2, 10):
nums = list(filter(lambda x: x == i or x % i, nums))
nums_a = list(filter(func, nums))
print(nums_a)
print(nums)
这个lambda函数想要检查一个数字是否等于2到9之间的一个数字,并且不能被其中任何一个整除。
换句话说,整个程序要过滤质数这里的列表是从2到99在循环中。我们只需要检查2到9的除数,因为如果我们传递到10,我们可以找到10 * 10 = 100
。