python - 括号类型的变化改变了返回的类型

标签 python python-3.x

<分区>

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

当我在 = 之后的语句的开头和结尾处在第 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>

我不明白为什么会这样,谁能解释一下。谢谢

最佳答案

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

[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/

关于python - 括号类型的变化改变了返回的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57140834/

相关文章:

python - 避免数据框中的 KeyError

python - 尝试在 ubuntu 上为 django 设置 mysql 但出现错误 'django.db.utils.OperationalError: (1046, ' 未选择数据库')'

python - 滚动时更改滚动窗口大小

python-3.x - Python3.8 无法安装 shap、llvmlite 或 numba

Python 3.7.3 无意中安装在 Mac OS 10.15.1 上 - 现在包含在 Xcode Developer Tools 11.2 中?

python-3.x - 标签内的美丽汤标签

python yaml.dump 缩进错误

python - 通过 SessionRunHooks 访问 Estimator 评估结果

python-3.x - 我想用python抓取一个网站,但是我遇到了麻烦。 requests library 是可以的,但是 400 与 Scrapy,下面的代码

python - 通过检查和默认值处理输入数据质量