首页 > 解决方案 > python中列表理解的异常行为

问题描述

我试图理解 python 中的 List-comprehensions ,我遇到了这种列表理解行为。当我这样做时: [print(y) for y in range(0,10)]它会给出响应

0
1
2
3
4
5
6
7
8
9
[None, None, None, None, None, None, None, None, None, None]

我知道它会打印 0 到 9,但我不明白它为什么会打印None。但是当我这样做时,o = [print(y) for y in range(0,10)]它会打印

0 1 2 3 4 5 6 7 8 9

这次没有任何none东西,我通过搜索找不到任何相关的东西,谁能解释一下,谢谢

标签: pythonpython-3.xlist-comprehension

解决方案


如果您从解释器中键入任何内容,它将回显函数或表达式返回的任何内容,除非它是None(默认值)。

例如:

>>> 1+1
2

同样,在print构建表达式时会执行函数调用,但Nones 的列表实际上是表达式的结果。

你可能想用它做点什么,所以要么:

[y for y in range(0,10)]

或者:

mylist = [y for y in range(0,10)]

更有意义。该print函数打印该值,但随后返回None并且它打印的值丢失。


推荐阅读