如果i!= 0 in list comprehension给出了语法错误

Leo*_*Leo 4 python list-comprehension syntax-error

这个问题很像: if/else在Python的列表理解中?Python中的简单语法错误,否则dict理解.但我仍然不明白我在这里犯了什么错误:

[i if i!=0 for i in range(2)]
             ^
       syntax error
Run Code Online (Sandbox Code Playgroud)

我只希望列表中的稀疏度为非零的条目.

Suk*_*lra 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]
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找条件表达式,您可以像@Martijn指出的那样做,

>>> [i if i!=0 else -1 for i in range(2)]
[-1, 1]
Run Code Online (Sandbox Code Playgroud)

如果您只想要非零实体,您也filter(...)可以使用列表.

>>> filter(None, [1, 2, 0, 0, 4, 5, 6])
[1, 2, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)