Was ist der richtige Weg, um mehrere Iterationen über einen Container durchzuführen? Von Python-Dokumentation:Korrekter Weg, um zweimal über eine Liste zu iterieren?
Iterator - Ein Container-Objekt (wie eine Liste) erzeugt ein neues, frisches Iterator jedes Mal, wenn Sie es an die iter() Funktion übergeben oder in einem for-Schleife verwenden. Wenn Sie dies mit einem Iterator versuchen, wird nur das erschöpfte Iterator-Objekt zurückgegeben, das im vorherigen Iterationsdurchgang verwendet wurde, wodurch es wie ein leerer Container erscheint.
Die Absicht des Protokolls ist, dass, sobald die next() - Methode eines Iterators StopIteration auslöst, dies auch bei nachfolgenden Aufrufen der Fall ist. Implementierungen, die dieser Eigenschaft nicht folgen, gelten als fehlerhaft. (Diese Einschränkung wurde in Python 2.3 hinzugefügt, in Python 2.2, verschiedene Iteratoren sind nach dieser Regel gebrochen.)
Wenn ich diesen Code haben:
slist = [1,2,3,4]
rlist = reversed(slist)
list(rlist)
#[4,3,2,1]
tuple(rlist)
#()
Was wäre die einfachste und richtigste Art zweimal über 'rlist' zu iterieren?
Hinweis iterieren müssen, dass Sie nicht Iterieren über eine Liste zweimal - Das ist einfach. Sie durchlaufen tatsächlich zweimal einen ' listreverseterator '>'. –
mgilson