列表理解:为什么这是一个语法错误?
为什么下面的列表理解中的 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]
Why is print(x)
here not valid (SyntaxError
) in the following list-comprehension?
my_list=[1,2,3]
[print(my_item) for my_item in my_list]
To contrast - the following doesn't give a syntax error:
def my_func(x):
print(x)
[my_func(my_item) for my_item in my_list]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
因为 print 不是函数,而是语句,并且不能将它们放在表达式中。如果您使用普通的 Python 2 语法,这一点会变得更加明显:
这看起来不太正确。 :) my_item 周围的括号会欺骗你。
顺便说一句,这在 Python 3 中发生了变化,其中 print 是一个函数,您的代码可以正常工作。
Because print is not a function, it's a statement, and you can't have them in expressions. This gets more obvious if you use normal Python 2 syntax:
That doesn't look quite right. :) The parenthesizes around my_item tricks you.
This has changed in Python 3, btw, where print is a function, where your code works just fine.
列表理解旨在创建列表。因此,无论我们在 2.7 或 3.x 中使用 print() 或 print,在里面使用 print 都会出错。该代码
创建了一个列表类型的新对象。
打印出这个新列表作为一个整体
参考:这里
list comprehension are designed to create a list. So using print inside it will give an error no-matter we use print() or print in 2.7 or 3.x. The code
makes a new object of type list.
prints out this new list as a whole
refer : here
这是一个语法错误,因为
print
不是一个函数。这是一个声明。由于您显然不关心print
的返回值(因为它没有),因此只需编写正常的循环即可:It's a syntax error because
print
is not a function. It's a statement. Since you obviously don't care about the return value fromprint
(since it has none), just write the normal loop:python 3 中的 print 使得如何使用它变得更加明显。
列表推导式中的方括号表示输出实际上是一个列表。
<代码>
L1=['a','ab','abc']
print([L1 中的项目的项目])
这应该可以解决问题。
print in python 3 makes it more obvious on how to use it.
the square brackets in the list comprehension denotes that the output will actually be a list.
L1=['a','ab','abc']
print([item for item in L1])
This should do the trick.