问题描述
一方面,我们有
- 列表理解
[x for x in range(10)]
- 设置理解力
{x for x in range(10)}
- 词典理解
{x: x for x in range(10)}
另一方面,我们有
- 生成器表达式
(x for x in range(10))
为什么前三个表达式被称为“理解”,而最后一个被称为“表达式”?它们的表示方式几乎相同,我想它们的工作方式也非常相似。背后有什么微妙的原因吗?只是出于好奇。
参考:
解决方法
理解产生新对象,这些新对象立即消耗内部for
循环。它们一旦运行就“完成”。
对
生成器的计算是延迟的-它们会立即返回,并返回一个稍后会产生单个值的对象。