簡単なリストがあります。
>>> a = [0, 1, 2]
リスト内包表記を使用して、そこから新しいリストを作成したいと考えています。
>>> b = [x*2 for x in a]
>>> b
[0, 2, 4]
非常に単純ですが、ゼロ以外の要素のみを操作したい場合はどうすればよいでしょうか?
「if」にはリスト内包表記で「else」が必要なので、これを思いつきました。
>>> 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]
リスト内包表記を使用してこの結果を取得するにはどうすればよいですか?