为什么将生成器表达式称为?

问题描述

一方面,我们有

  • 列表理解[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循环。它们一旦运行就“完成”。

生成器的计算是延迟的-它们会立即返回,并返回一个稍后会产生单个值的对象。