[英]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.