我學習一些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]
這是最終輸出的一部分,僅僅是真實的。任何人都可以請詳細說明這一點,因爲我已經開始在這段代碼一段時間,不能讓我的頭在附近。
注意,這僅產生質數高達11^2(121)。 – georg