这个问题很像: 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 文档条目。
>>> [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]
>>>