Lista de compreensão com condição
Eu tenho uma lista simples.
>>> a = [0, 1, 2]
Quero fazer uma nova lista usando uma compreensão de lista.
>>> b = [x*2 for x in a]
>>> b
[0, 2, 4]
Muito simples, mas e se eu quiser operar apenas sobre elementos diferentes de zero?
'if' needs 'else' na compreensão da lista, então eu vim com isso.
>>> b = [x*2 if x != 0 else None for x in a]
>>> b
[None, 2, 4]
Mas o resultado desejável é.
>>> b
[2, 4]
Eu posso fazer assim
>>> a = [0, 1, 2]
>>> def f(arg):
... for x in arg:
... if x != 0:
... yield x*2
...
>>> list(f(a))
[2, 4]
ou usando 'filter' e um lambda
>>> a = [0, 1, 2]
>>> list(filter(lambda x: x != 0, a))
[1, 2]
Como obtenho esse resultado usando uma compreensão de lista?