首页 > 解决方案 > 更改括号类型更改返回类型

问题描述

我是我项目中的一些代码,但我遇到了一个我解决的问题,但我不知道它是如何工作的。当我更改代码中使用的括号类型时,年份的值是不同的。

当我在第 2 行中使用方括号在语句的开头和结尾之后=

import datetime
years=[x for x in range(2015,datetime.datetime.now().year)]

当我print(years)给出输出时[2015,2016,2017,2018]

但是当我像这样在第 2 行使用圆括号时

years=(x for x in range(1940,datetime.datetime.now().year))

当我打印它时,它会给出输出<generator object <genexpr> at 0x041DB630>

我不明白为什么会发生这种情况,谁能解释一下。谢谢

标签: pythonpython-3.x

解决方案


这是两个不同但相关的结构。

[x for x in range(2015,datetime.datetime.now().year)]

被称为列表推导,而

(x for x in range(2015,datetime.datetime.now().year))

被称为生成器表达式

阅读更多https://djangostars.com/blog/list-comprehensions-and-generator-expressions/


推荐阅读