python - 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
东西,我通过搜索找不到任何相关的东西,谁能解释一下,谢谢
解决方案
如果您从解释器中键入任何内容,它将回显函数或表达式返回的任何内容,除非它是None
(默认值)。
例如:
>>> 1+1
2
同样,在print
构建表达式时会执行函数调用,但None
s 的列表实际上是表达式的结果。
你可能想用它做点什么,所以要么:
[y for y in range(0,10)]
或者:
mylist = [y for y in range(0,10)]
更有意义。该print
函数打印该值,但随后返回None
并且它打印的值丢失。
推荐阅读
- xml - 使用 RMLMapper 将 XML 嵌套到 Turtle 映射
- laravel - Bootstrap 4在关闭时破坏模态
- r - 每次一行包含字符串中的字符时,如何添加一个计数器?
- open-liberty - MicroProfile REST客户端上的容错@Asynchronous导致Windows上打开自由核心转储
- javascript - 无法在 Javascript 中显示数据
- javascript - 如何提取根域
- swift - Digitalcrownrotation 可变步幅值
- r - 用 sub 或 gsub 替换整个列名
- python - Keras - 具有多个输入的自定义层
- excel - 计算与其他两个单元格中的值相关的单元格值