Ho una lista semplice.Comprensione delle liste con condizione
>>> a = [0, 1, 2]
Voglio creare una nuova lista utilizzando una lista di comprensione.
>>> b = [x*2 for x in a]
>>> b
[0, 2, 4]
Abbastanza semplice, ma che cosa se voglio operare solo su elementi diversi da zero?
'se' ha bisogno 'altro' nella comprensione delle liste, così mi è venuto in mente questo.
>>> b = [x*2 if x != 0 else None for x in a]
>>> b
[None, 2, 4]
Ma il risultato auspicabile è.
>>> b
[2, 4]
posso farlo in questo modo
>>> a = [0, 1, 2]
>>> def f(arg):
... for x in arg:
... if x != 0:
... yield x*2
...
>>> list(f(a))
[2, 4]
o utilizzando 'filtro' e un lambda
>>> a = [0, 1, 2]
>>> list(filter(lambda x: x != 0, a))
[1, 2]
Come faccio a ottenere questo risultato utilizzando una lista di comprensione?
Sei il mio eroe. =) – selurvedu