我正在学习一些 python 并遇到此代码来查找所有质数,直到 N 数。
N = 20
nums = xrange(2, N)
for i in xrange(2,8):
nums = filter(lambda x: x == i or x % i, nums)
print nums # [2, 3, 5, 7, 11, 13, 17, 19]
算法正常工作,只是这x == i or
部分让我感到困惑。
如果我只是为了结果而删除它nums = filter(lambda x: x % i, nums)
输出将是[11, 13, 17, 19]
但是,该or
语句意味着对于数字[2,3,4,5,6,7]
,代码行被评估为:
filter(lambda x: x == i, nums)
而且我不知道仅此一项如何产生[2, 3, 5, 7]
这是最终输出的一部分并且是正确的。任何人都可以详细说明这一点,因为我已经开始使用这段代码一段时间了,无法理解它。