【发布时间】:2015-05-14 08:17:39
【问题描述】:
我正在尝试创建一个迭代器,它会懒惰地创建(可能无限多个)迭代器的副本。这可能吗?
我知道我可以通过简单地创建任何固定的有限数量的副本
from itertools import tee
iter_copies = tee(my_iter, n=10)
但是如果你不提前知道 n 或者 n 是无限的,这就会失败。
我通常会尝试一些类似的东西
from itertools import tee
def inf_tee(my_iter):
while True:
yield tee(my_iter)[1]
但文档指出,在迭代器上使用 tee 后,无法再使用原始迭代器,因此这不起作用。
如果您对该应用程序感兴趣:想法是创建一个惰性unzip 函数,可能用于pytoolz。我当前的实现可以处理有限数量的无限迭代器(比普通的zip(*seq) 更好),但不能处理无限数量的无限迭代器。如果您对详细信息感兴趣,这里是pull request。
【问题讨论】:
标签: python iterator lazy-evaluation