我有一个下面的迭代器容器的虚拟示例(真正的读取文件太大而不适合内存):
class DummyIterator: def __init__(self,max_value): self.max_value = max_value def __iter__(self): for i in range(self.max_value): yield i def regular_dummy_iterator(max_value): for i in range(max_value): yield i
这允许我多次迭代该值,以便我可以实现这样的事情:
def normalise(data): total = sum(i for i in data) for val in data: yield val / total # this works when I call next() normalise(DummyIterator(100)) # this doesn't work when I call next() normalise(regular_dummy_iterator(100))