列表理解:为什么这是一个语法错误?
为什么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]
将整个列表打印出来
请参考: 这里