Skip to main content
 首页 » 编程设计

python之列表理解之Python 2.7

2025年05月04日10pander-it

我试图将以下内容转换为列表理解,但它给我一个无效的语法错误。我尝试了一些解决方案,例如压缩组合,但我无法让它工作。

我显然缺少一些基本的理解,即我可以使用列表推导式做什么和不能做什么。我的错误是什么?

有效

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) 

不起作用

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)] 

请您参考如下方法:

这里有两个问题。

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

[print(c) for c in [(x,y,z), (x,z,y), (y,x,z), (y,z,x), (z,x,y), (z,y,x)]] 

其次,print 是 Python 2 中的语句,而不是函数,因此它不能用于列表推导式,因为它们只能包含表达式。

您可以执行 from __future__ import print_function 将其更改为函数,就像在 Python 3 中一样。

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