列表理解返回值加[无,无,无],为什么?

jas*_*son 5 python python-3.x

我正在研究理解.我得到了print(x)部分(我认为.它打印了传递'in'测试的x的值)但是为什么它之后也会返回None列表呢?

>>> g
['a', 'x', 'p']

>>> [print(x) for x in g]
a
x
p
[None, None, None] #whats this? 
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 18

print是一个函数(在Python3中).它会在屏幕上打印一些内容,但会返回 None.

在Python2中,print是一个声明.[print(x) for x in g]会引发一个SyntaxError,因为在列表推导中只能使用表达式而不是语句.函数调用是一个表达式,这就是Python3中允许它的原因.但正如您所看到的print,即使允许使用列表解析也不是很有用.


tde*_*ney 7

您使用列表推导来打印列表中的项目,然后打印列表本身.尝试将列表分配给变量.

>>> g
['a', 'x', 'p']

>>> x = [print(x) for x in g]
a
x
p
#
Run Code Online (Sandbox Code Playgroud)

现在列表是x并且没有打印.清单还在那里......

>>> print(x)
[None, None, None]
>>> x
[None, None, None]
Run Code Online (Sandbox Code Playgroud)

  • Nones仍在那里 - 它们只是变量'x'.当您在解释器中时,将打印未分配给变量的任何内容.你的头可以不爆炸. (2认同)