列表推导:为什么这是语法错误?

48 投票
4 回答
29353 浏览
提问于 2025-04-15 18:29

为什么在下面的列表推导式中,print(x) 这个写法会出现无效的情况(SyntaxError)呢?

my_list=[1,2,3]
[print(my_item) for my_item in my_list]

对比一下,下面这个写法就不会出现语法错误:

def my_func(x):
    print(x)
[my_func(my_item) for my_item in my_list]

4 个回答

7

这是一个语法错误,因为 print 不是一个函数,而是一个语句。显然你并不在乎 print 的返回值(因为它没有返回值),所以你只需要写一个普通的循环就可以了:

for my_item in my_list:
    print my_item
9

列表推导式是用来创建列表的。所以在里面使用打印功能会出错,无论你用的是print()还是在2.7或3.x版本中用print。代码

[my_item for my_item in my_list] 

会生成一个新的列表对象。

print [my_item for my_item in my_list]

然后把这个新列表整体打印出来。

参考链接:这里

62

因为print不是一个函数,而是一个语句,所以你不能把它放在表达式里。如果你用普通的Python 2语法,这一点会更明显:

my_list=[1,2,3]
[print my_item for my_item in my_list]

这看起来不太对劲。:) 括号里的my_item让你产生了误解。

顺便说一下,这在Python 3中发生了变化,print 变成了一个函数,这样你的代码就可以正常工作了。

撰写回答