この質問は、Python のリスト内包表記の if/elseによく似てい ます。 Pythonの 単純な構文エラー if else dict comprehension . しかし、ここでどのようなエラーが発生するのかまだわかりません:
[i if i!=0 for i in range(2)]
^
syntax error
スパース性がゼロでないリスト内のエントリのみが必要です。
この質問は、Python のリスト内包表記の if/elseによく似てい ます。 Pythonの 単純な構文エラー if else dict comprehension . しかし、ここでどのようなエラーが発生するのかまだわかりません:
[i if i!=0 for i in range(2)]
^
syntax error
スパース性がゼロでないリスト内のエントリのみが必要です。
if
を最後まで動かします。List Comprehensions に関する Python Docs エントリを参照してください。
>>> [i for i in range(2) if i!=0] # Or [i for i in range(2) if i]
[1]
条件式を探している場合は、@Martijn が指摘したようなことができます。
>>> [i if i!=0 else -1 for i in range(2)]
[-1, 1]
ゼロ以外のエンティティだけが必要な場合はfilter(...)
、リストにすることもできます。
>>> filter(None, [1, 2, 0, 0, 4, 5, 6])
[1, 2, 4, 5, 6]
if
述語はfor i in range(2)
、リスト内包表記の指定の後に来ます。任意の数のif
s を持つこともできます。
if i!=0
とのfor i in range(2)
部分を切り替えます。
>>> [i for i in range(2) if i!=0]
[1]
>>>