栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

生成器理解与列表理解的输出是否不同?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生成器理解与列表理解的输出是否不同?

在列表理解中,对表达式进行热切评估。在生成器表达式中,仅根据需要查找它们。

因此,当生成器表达式遍历时

for c inall_configs
,它引用
c[k]
但仅
c
在循环完成后查找,因此它仅对两个元组使用最新值。相比之下,列表推导会立即进行评估,因此它将创建第一个值为的
c
元组和第二个值为的元组
c

考虑这个小例子:

>>> r = range(3)>>> i = 0>>> a = [i for _ in r]>>> b = (i for _ in r)>>> i = 3>>> print(*a)0 0 0>>> print(*b)3 3 3

创建时

a
,解释器立即创建该列表,
i
并在对其求值后立即查找其值。创建时
b
,解释器只是设置了该生成器,实际上并没有对其进行迭代并查找
i
。这些
print
电话告诉解释器评估这些对象。
a
已经作为完整列表存在于内存中,具有旧值
i
,但是
b
在那时进行了评估,当它查找的值时
i
,便找到了新值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号