小编典典

在 Python 中重置生成器对象

all

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

y = FunctionWithYield()
for x in y: print(x)
#here must be something to reset 'y'
for x in y: print(x)

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


阅读 63

收藏
2022-07-14

共1个答案

小编典典

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

import itertools
y = FunctionWithYield()
y, y_backup = itertools.tee(y)
for x in y:
    print(x)
for x in y_backup:
    print(x)

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

2022-07-14