Listenverständnis mit Bedingung

Ich habe eine einfache Liste.

>>> a = [0, 1, 2]

Ich möchte eine neue Liste daraus unter Verwendung eines Listenverständnisses erstellen.

>>> b = [x*2 for x in a]
>>> b
[0, 2, 4]

Ziemlich einfach, aber was ist, wenn ich nur mit Elementen ungleich Null arbeiten möchte?

'Wenn' in Listenverständnissen 'sonst' benötigt, habe ich mir das ausgedacht.

>>> b = [x*2 if x != 0 else None for x in a]
>>> b
[None, 2, 4]

Aber das wünschenswerte Ergebnis ist.

>>> b
[2, 4]

Das kann ich so machen

>>> a = [0, 1, 2]
>>> def f(arg):
...     for x in arg:
...         if x != 0:
...             yield x*2
... 
>>> list(f(a))
[2, 4]

oder mit "Filter" und einem Lambda

>>> a = [0, 1, 2]
>>> list(filter(lambda x: x != 0, a))
[1, 2]

Wie erhalte ich dieses Ergebnis anhand eines Listenverständnisses?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage