PyN*_*oob 2 python list-comprehension python-2.7
我试图将以下内容转换为列表理解,但它给了我一个无效的语法错误。我尝试了一些解决方案,例如压缩组合,但我无法让它工作。
我显然缺少对列表推导式我能做什么和不能做什么的一些基本理解。我的错误是什么?
作品
def myfun(x, y, z):
for c in (x,y,z), (x,z,y), (y,x,z), (y,z,x), (z,x,y), (z,y,x):
print(c)
Run Code Online (Sandbox Code Playgroud)
不起作用
def myfun(x, y, z):
[print(c) for c in (x,y,z), (x,z,y), (y,x,z), (y,z,x), (z,x,y), (z,y,x)]
Run Code Online (Sandbox Code Playgroud)
你在这里有两个问题。
首先,您需要将所有元素包装到一个列表中:
[print(c) for c in [(x,y,z), (x,z,y), (y,x,z), (y,z,x), (z,x,y), (z,y,x)]]
Run Code Online (Sandbox Code Playgroud)
其次, print是 Python 2 中的语句,而不是函数,因此它不能用于列表理解中,因为它们只能包含表达式。
你可以做 from __future__ import print_function其更改为函数,就像在 Python 3 中一样。
但是,这在列表理解中并不合适。它们用于在每个元素上调用一些东西并将结果作为列表返回;你不应该因为它们的副作用而使用它们。