推 Yshuan:我猜猜可能點 remove完當下 index指向下個(因為本來被刪除) 10/20 10:57
→ Yshuan:然後你又做index = index + 1 所以你allNumber有些被跳過了 10/20 10:58
→ kusoayan:我原本用 for 寫迴圈,可是 google 到好像會跳過一些值 10/20 11:23
→ kusoayan:所以才改用 while .. QQ 10/20 11:23
的確被猜中了,我把
allNumber.remove(allNumber[index])
改成
allNumber[index] = 0
後
除了質數其他都變 0 了 ..
這樣我到底該怎麼剔除這些元素呢QQ
※ 編輯: kusoayan 來自: 140.112.4.201 (10/20 11:29)
推 rexkimta:用另外一個list來存質數,allnumber就存allnumber就好了 10/20 11:41
推 Yshuan:allNumber = [n for n in allNumber if isPrime(n)] 10/20 11:42
→ Yshuan:isPrime(n) 回傳boolean來判斷 10/20 11:43
推 kilfu0701:f_allNumber = filter(lambda a: a != 0, allNumber) 10/20 11:47
→ kdjf:把東西從list拿掉會動到後面的每一個東西,不太好吧 10/20 20:10
→ kusoayan:目前是採用Ys大的 filter 方法 QQ 10/20 22:02
→ kusoayan:暫時運作正常 不過這樣對效能影響大嗎? 10/20 22:02