ann ich in Python mit tee faul Kopien eines Iterators erstelle

Ich versuche, einen Iterator zu erstellen, der träge (möglicherweise unendlich viele) Kopien eines Iterators erstellt. Ist das möglich

Ich weiß, dass ich eine feste begrenzte Anzahl von Kopien erstellen kann, indem ich einfach

iter_copies = tee(my_iter, n=10)

, aber dies bricht zusammen, wenn Sie n nicht im Voraus wissen oder wenn n unendlich ist.

Ich würde normalerweise etwas nach dem Vorbild von @ versuch

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

Aber die Dokumentation besagt, dass nach der Verwendung von tee auf einem Iterator der ursprüngliche Iterator nicht mehr verwendet werden kann, sodass dies nicht funktioniert.

Wenn Sie an der Anwendung interessiert sind: Die Idee ist, eine faule @ zu erstellunzip -Funktion, möglicherweise zur Verwendung in pytoolz. Meine aktuelle Implementierung kann eine endliche Anzahl von unendlichen Iteratoren verarbeiten (was besser ist als plainzip(*seq)), aber nicht unendlich viele Iteratoren. Hier ist diepull request Wenn Sie an den Details interessiert sind.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage