2
我試圖創建一個迭代器,它懶洋洋地創建(可能無限多)一個迭代器的副本。這可能嗎?在python中,我可以使用tee懶惰地生成一個迭代器的副本嗎?
我知道我可以簡單地做
iter_copies = tee(my_iter, n=10)
創建副本的任何固定數量有限,但這打破了,如果你不知道N.提前或如果n是無限的。
我通常會嘗試沿着
def inf_tee(my_iter):
while True:
yield tee(my_iter)[1]
線條的東西,但是文檔指出使用上一個迭代三通後可以不再使用原來的迭代器,所以這是不行的。
如果您感興趣的應用程序:這個想法是創建一個懶惰的unzip
功能,可能在pytoolz使用。我目前的實現可以處理有限數量的無限迭代器(它比簡單的zip(*seq)
更好),但不是無限數量的無限迭代器。如果您對細節感興趣,請撥打pull request。
太棒了!奇怪的是,這個例子('tee_lookahead'的權利?)在2.7文檔中,但不在3.4文檔中。你知道這是否有充分的理由嗎? – dshepherd
@dshepherd:不知道。該方法在Python 3中仍然存在,但該示例不是。 – user2357112
那麼它似乎仍然在python 3中工作。 – dshepherd