在Python中重置生成器对象

我有一个由多个yield返回的生成器对象。准备调用此生成器是相当耗时的操作。这就是为什么我想多次重用生成器。

y = FunctionWithYield()

for x in y: print(x)

#here must be something to reset 'y'

for x in y: print(x)

当然,我会考虑将内容复制到简单列表中。有没有办法重置我的发电机?

回答:

另一个选择是使用该itertools.tee()函数来创建生成器的第二版本:

y = FunctionWithYield()

y, y_backup = tee(y)

for x in y:

print(x)

for x in y_backup:

print(x)

如果原始迭代可能未处理所有项目,则从内存使用的角度来看这可能是有益的。

以上是 在Python中重置生成器对象 的全部内容, 来源链接: utcz.com/qa/412465.html

回到顶部