发布网友 发布时间:2023-10-14 14:19
共1个回答
热心网友 时间:2024-12-05 15:13
generator都输出生成一个iterator对象,再由iterator遍历出元素。迭代器就是逐个以“下一个”的形式返回元素的函数。
比如range(10)是生成器,生成一个显示为"range(0,10)"的迭代器对象,可以进一步由for等遍历输出0,1,2,3..10
又比如对于遍历字典的iter(d)都是生成器函数
都在不同的层面,无所谓好坏...生成器产生不同的迭代器,迭代器直接产生元素,适合各自情况的就用...
有必要区分generator生成器函数(对象)和generator expression生成器表达式
比如:
range()生成器函数
for i in range(10)生成器表达式
[i+1 for i in range(10)]对生成器表达式的"列表分解"
另,贴图中由于断章取义,这里的“生成器自身”应该是有特指某个生成器,而不是所有生成器的共性