我正在使用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
“无”来自哪里?
答案 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']