列表推导:为什么这是语法错误?
为什么在下面的列表推导式中,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 变成了一个函数,这样你的代码就可以正常工作了。