4

この質問は、Python のリスト内包表記の if/elseによく似てい ます。 Pythonの 単純な構文エラー if else dict comprehension . しかし、ここでどのようなエラーが発生するのかまだわかりません:

[i if i!=0 for i in range(2)]
             ^
       syntax error

スパース性がゼロでないリスト内のエントリのみが必要です。

4

3 に答える 3

11

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]
于 2013-08-15T19:55:44.607 に答える
2

if述語はfor i in range(2)、リスト内包表記の指定の後に来ます。任意の数のifs を持つこともできます。

于 2013-08-15T19:55:51.377 に答える
1

if i!=0とのfor i in range(2)部分を切り替えます。

>>> [i for i in range(2) if i!=0]
[1]
>>>
于 2013-08-15T19:56:35.150 に答える