Понимание списка с условием
У меня есть простой список.
>>> 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]
Как получить этот результат, используя понимание списка?