>>> [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
Così litheor(2)
è True
e 2 in sieve(100)
è True
, quindi la clausola if
nella lista di comprensione è False
. Ma perché 2
è ancora nell'output della comprensione della lista?Python: qualcosa è andato storto da qualche parte nella comprensione della lista?
Grazie. 1, tuttavia, non è in setaccio (100). C'è qualcos'altro che potrebbe essere andato storto? –
@SylvesterVLowell Beh, potrebbe essere uno dei seguenti: 1) 'sieve (100)' che contiene non solo interi ma anche booleano 'True'; 2) 'litheor (2)' return '2' invece di boolean e' setaccio (100) 'contenenti' 0'. Non riesco a vedere altre opzioni. Potresti mostrarci le tue definizioni di 'setaccio' e' litheor', per favore? – kirelagin
@SylvesterVLowell Oh aspetta ... Hai ragione ... Questo è totalmente folle ... – kirelagin