Python:range()和非消耗品生成器

时间:2017-12-04 03:45:16

标签: python python-3.x range generator

在Python 3(2)中,rangexrange)函数返回一个生成连续整数的生成器,例如

g = range(5)
print(g)  # Prints range(0, 5)
t = tuple(g)
print(t)  # Prints (0, 1, 2, 3, 4)

这里,tuple(g)通过循环生成器g并存储每个产生的数字来构造元组。我也可以从元组构造一个生成器,例如

# like this
g2 = iter(t)
t2 = tuple(g2)
# or like this
g3 = (n for n in t)
t3 = tuple(g3)

原始g与家庭制作的g2g3之间存在很大差异,如果我们尝试构建第二个元组,我们会看到它们:

tuple(g)   # Works as before
tuple(g2)  # Produces an empty tuple !
tuple(g3)  # Produces an empty tuple !

因此,g2g3(与g不同)是"消费"在迭代。

是否有一种简单的方法来生产定制的非消耗性发电机?我的猜测是既没有生成器表达式也没有yield可以使用的裸函数。

0 个答案:

没有答案