我无法想象我是第一个写这样一个类的人:
class RestartableGenerator:
def __init__(self, g):
self.g = g
def __iter__(self):
return self.g().__iter__()
if __name__=='__main__':
def gen():
print 'Generating'
for i in range(5):
yield i
i = RestartableGenerator(gen)
print 'Using'
print list(i)
print list(i)
测试产生以下输出:
Using
Generating
[0, 1, 2, 3, 4]
Generating
[0, 1, 2, 3, 4]
但我没有在标准库中找到它。我查看了 itertools 和 functools。
真的没有吗?如果是,在哪里?
它是否被认为是不必要的,因为当你想多次评估一个序列时,你最好将它存储在一个列表中?
编辑1:我的用例是我希望它对于消费者来说是透明的,由于内存消耗的原因,序列是生成器而不是列表。
编辑2:如果标准库中没有这样的类,你认为什么名字合适?括号去除器?多次迭代?还要别的吗?为什么?