Понимание списка с условием

У меня есть простой список.

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

Я хочу сделать из него новый список, используя понимание списка.

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

Довольно просто, но что, если я хочу работать только с ненулевыми элементами?

«если» нужно «еще» в списках, так что я придумал это.

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

Но желаемый результат есть.

>>> b
[2, 4]

Я могу сделать это таким образом

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

или используя «фильтр» и лямбда

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

Как получить этот результат, используя понимание списка?

Ответы на вопрос(2)

Ваш ответ на вопрос