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.