为什么打印字符串的所有字符都赋予None?

时间:2019-02-22 13:04:20

标签: python

我正在使用2种方法来打印字符串中的字符。

s = 'hello'
[print(i) for i in s]
上面的

片段产生:

h
e
l
l
o
[None, None, None, None, None]

另外一个代码段

s = 'hello'
for i in s:
    print(i)

正常执行

h
e
l
l
o

“无”来自哪里?

1 个答案:

答案 0 :(得分:2)

我想您正在以交互方式进行此操作,因此在完成列表理解(一次打印一个字母)之后,将打印列表理解的结果。

>>> s = 'hello'
>>> [print(i) for i in s]
h
e
l
l
o
[None, None, None, None, None]

如果您将其存储到变量中,则列表理解本身将不会被打印:

>>> s = 'hello'
>>> lots_of_nones = [print(i) for i in s]
h
e
l
l
o

那么None来自哪里?好吧,当您使用列表理解来创建列表时,您实际上是在说“将函数调用print(i)的结果作为元素存储”。由于打印功能不返回任何内容,因此存储了None。相当于说:

[None for i in 'hello']