繁体   English   中英

我不明白这个 lambda

[英]i don't understand this lambda

我在 web 上寻找一个 lambda 可以用来获取素数。 我找到了这个:

nums = range(2, 100)
for i in range(2, 10):
    nums = list(filter(lambda x: x == i or x % i, nums))
print(nums)

i理解x % i i——作为一个从 2 到 10 的数字列表——如何过滤掉大于 10 的非质数; 令我感到困惑的是如何将i列表添加到最终的nums中。

我相信它可能与x == i boolean 有关,但我不明白它是如何工作的。

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)

这个 lambda function 想要检查一个数字是否等于 2 到 9 之间的数字并且不能被其中任何一个整除。

换句话说,整个程序在循环中从2到99中筛选素数。 我们只需要检查从 2 到 9 的除数,因为如果我们传递到 10,我们可以找到10 * 10 = 100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM