列表理解:为什么这是语法错误?

时间:2010-01-26 17:10:12

标签: python list-comprehension python-2.6

为什么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 个答案:

答案 0 :(得分:60)

因为print不是一个函数,所以它是一个声明,你不能在表达式中使用它们。如果使用普通的Python 2语法,这会变得更加明显:

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

这看起来不太合适。 :) my_item周围的括号内容欺骗了你。

这在Python 3中发生了变化,顺便说一句,其中print 一个函数,你的代码工作正常。

答案 1 :(得分:7)

这是语法错误,因为print不是函数。这是一个声明。因为你显然不关心print的返回值(因为它没有),所以只需编写正常的循环:

for my_item in my_list:
    print my_item

答案 2 :(得分:7)

list comprehension旨在创建一个列表。所以在里面使用print会产生错误,无论我们使用print()还是在2.7或3.x中打印。代码

[my_item for my_item in my_list] 

创建一个list类型的新对象。

print [my_item for my_item in my_list]

整体打印出这个新列表

参考:here

答案 3 :(得分:0)

python 3中的

print使如何使用它更加明显。

列表理解中的方括号表示输出实际上将是一个列表。      L1=['a','ab','abc'] print([item for item in L1])    这应该可以解决问题。