【发布时间】:2016-09-12 08:11:31
【问题描述】:
我想编写一个程序,从素数列表中删除所有包含偶数的素数。
谁能解释一下为什么这个代码在limit = 200时返回正确的结果,但在limit = 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) 是一个生成器,它返回所有低于限制的素数。
如果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