列表理解 - Python 2.7

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)

Dan*_*man 5

你在这里有两个问题。

首先,您需要将所有元素包装到一个列表中:

[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 中一样。

但是,这在列表理解中并不合适。它们用于在每个元素上调用一些东西并将结果作为列表返回;你不应该因为它们的副作用而使用它们。