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

发布于 2024-08-19 09:37:25 字数 277 浏览 9 评论 0原文

为什么下面的列表理解中的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

方觉久 2024-08-26 09:37:25

因为 print 不是函数,而是语句,并且不能将它们放在表达式中。如果您使用普通的 Python 2 语法,这一点会变得更加明显:

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

这看起来不太正确。 :) 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:

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

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.

初懵 2024-08-26 09:37:25

列表理解旨在创建列表。因此,无论我们在 2.7 或 3.x 中使用 print() 或 print,在里面使用 print 都会出错。该代码

[my_item for my_item in my_list] 

创建了一个列表类型的新对象。

print [my_item for my_item in my_list]

打印出这个新列表作为一个整体

参考:这里

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

[my_item for my_item in my_list] 

makes a new object of type list.

print [my_item for my_item in my_list]

prints out this new list as a whole

refer : here

绻影浮沉 2024-08-26 09:37:25

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

for my_item in my_list:
    print my_item

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 from print (since it has none), just write the normal loop:

for my_item in my_list:
    print my_item
苍景流年 2024-08-26 09:37:25

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文