В Python, я могу лениво генерировать копии итератора, используя тройник?

Я пытаюсь создать итератор, который лениво создает (потенциально бесконечно много) копий итератора. Это возможно?

Я знаю, что могу создать любое фиксированное конечное число копий, просто выполнив

iter_copies = tee(my_iter, n=10)

но это ломается, если вы не знаете n заранее или n бесконечно.

Я обычно пробовал бы что-то вроде

def inf_tee(my_iter):
    while True:
        yield tee(my_iter)[1]

Но в документации говорится, что после использования tee на итераторе исходный итератор больше не может использоваться, поэтому это не будет работать.

В случае, если вы заинтересованы в приложении: идея состоит в том, чтобы создать ленивыйunzip функция, потенциально для использования вpytoolz, Моя текущая реализация может обрабатывать конечное число бесконечных итераторов (что лучше, чем обычныйzip(*seq)), но не бесконечное число бесконечных итераторов. Воттянуть запрос если вы заинтересованы в деталях.

Ответы на вопрос(1)

Ваш ответ на вопрос