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

为什么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] 

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

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

这看起来不太正确。 :)围绕my_item的括号会欺骗你。

这在Python 3中已经改变了,顺便说一句,print 一个函数,在那里你的代码工作得很好。

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

 for my_item in my_list: print my_item 

列表理解旨在创build一个列表。 所以使用它里面的打印将给出一个错误,无论我们使用print()还是打印在2.7或3.x中。 代码

 [my_item for my_item in my_list] 

创build一个新的对象types列表。

 print [my_item for my_item in my_list] 

将整个列表打印出来

请参考: 这里