我想編寫一個程序,它從素數列表中刪除包含偶數位的所有素數。Python - 從素數列表中刪除包含偶數的素數
任何人都可以解釋爲什麼這個代碼返回正確的結果,如果限制= 200,但返回一個錯誤,如果限制= 300?
def odd_primes(limit):
r = list(gen_primes(limit))
for i in r[:]:
for j in str(i):
if int(j)%2==0:
r.remove(i)
return r
gen_primes(limit)
其中gen_primes(limit)
是一個發電機,它返回所有的質數在極限以下。
如果limit = 200返回:
[3, 5, 7, 11, 13, 17, 19, 31, 37, 53, 59, 71, 73, 79, 97, 113, 131, 137, 139, 151, 157, 173, 179, 191, 193, 197, 199]
但如果限制爲300我得到這個錯誤:
line 19, in odd_primes
r.remove(i)
ValueError: list.remove(x): x not in list
爲什麼會出現這種情況?我該如何糾正它?
共享完整的代碼,包括gen_primes –