>>> [l for l in range(2,100) if litheor(l)!=l in sieve(100)]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
>>> 2 in sieve(100)
True
>>> litheor(2)
True
So litheor(2)
ist True
und 2 in sieve(100)
ist True
, so dass die if
-Klausel in der Liste Verständnis ist False
. Aber warum ist 2
immer noch in der Ausgabe des Listenverständnisses?Python: Irgendwas ist im Listenverständnis falsch gelaufen?
Danke. 1 ist jedoch nicht in Sieb (100). Gibt es noch etwas, das schief gelaufen sein könnte? –
@SylvesterVLowell Nun, könnte einer der folgenden sein: 1) 'sieb (100)' enthält nicht nur ganze Zahlen, sondern auch Boolean 'True'; 2) 'litheor (2)' returning '2' anstelle von boolean und' sieb (100) 'mit' 0'. Ich kann keine anderen Optionen sehen. Können Sie uns bitte Ihre Definitionen von 'sieb' und' litheor' zeigen? – kirelagin
@SylvesterVLowell Oh warte ... Du hast Recht ... Das ist total verrückt ... – kirelagin