关于python:为什么打印字符串的所有字符都给出?

why print all the characters of a string give None?

本问题已经有最佳答案,请猛点这里访问。

我使用两种方法来打印字符串中的字符。

1
2
s = 'hello'
[print(i) for i in s]

上面的代码段产生:

1
2
3
4
5
6
h
e
l
l
o
[None, None, None, None, None]

而另一个片段

1
2
3
s = 'hello'
for i in s:
    print(i)

正常运行

1
2
3
4
5
h
e
l
l
o

"无"是从哪里来的?


我猜你是在交互地做这件事,所以当你的列表理解完成后(一次打印一个字母),列表理解的结果将被打印出来。

1
2
3
4
5
6
7
8
>>> s = 'hello'
>>> [print(i) for i in s]
h
e
l
l
o
[None, None, None, None, None]

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

1
2
3
4
5
6
7
>>> s = 'hello'
>>> lots_of_nones = [print(i) for i in s]
h
e
l
l
o

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

1
[None for i in 'hello']