この質問は、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)、リスト内包表記の指定の後に来ます。任意の数のifs を持つこともできます。
if i!=0とのfor i in range(2)部分を切り替えます。
>>> [i for i in range(2) if i!=0]
[1]
>>>