Ich möchte ein Programm schreiben, das alle Primzahlen entfernt, die eine gerade Zahl aus einer Liste von Primzahlen enthalten.Python - Entfernen von Primzahlen, die eine gerade Zahl aus einer Liste von Primzahlen enthalten
Kann jemand erklären, warum dieser Code das korrekte Ergebnis zurückgibt, wenn das Limit = 200, aber einen Fehler zurückgibt, wenn das 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
Wo gen_primes(limit)
ist ein Generator, der alle Primzahlen unter Limit zurückgibt.
Wenn Limit = 200 kehrt:
[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]
Aber wenn die Grenze 300 erhalte ich diese Fehlermeldung:
line 19, in odd_primes
r.remove(i)
ValueError: list.remove(x): x not in list
Warum ist dies der Fall? Und wie kann ich das korrigieren?
Anteil Komplettes Code einschließlich gen_primes –