python-3.x 我不明白这个lambda

huwehgph  于 2023-01-18  发布在  Python
关注(0)|答案(2)|浏览(165)

我在网上寻找一个可以用来得到质数的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布尔值有关,但我不明白它是如何工作的。

cdmah0mi

cdmah0mi1#

Lambda函数可以用来缩短代码。它们可以与使用至少两行代码的“普通”函数相比较。func将与您的Lambda函数相同:

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

zdwk9cvp2#

这个lambda函数要检查一个数是否等于2到9之间的数,并且不能被其中任何一个整除。
换句话说,整个程序要过滤的质数列表是从2到99,在循环中,我们只需要检查从2到9的除数,因为如果我们传递到10,我们可以得到10 * 10 = 100

相关问题