Holen Sie das nächste Element beim Radfahren durch eine Liste
li = [0, 1, 2, 3]
running = True
while running:
for elem in li:
thiselem = elem
nextelem = li[li.index(elem)+1]
Wenn diese erreicht das Letzte element, eine IndexError
ausgelöst wird (wie ist der Fall für jede Liste, Tupel, Wörterbücher, oder string, iteriert wird). Eigentlich möchte ich an diesem Punkt für nextelem
gleich li[0]
. Meine eher umständliche Lösung war
while running:
for elem in li:
thiselem = elem
nextelem = li[li.index(elem)-len(li)+1] # negative index
Gibt es einen besseren Weg, dies zu tun?
InformationsquelleAutor der Frage | 2010-01-30
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach zu denken, diese sorgfältig durch, ich denke, dies ist der beste Weg. Es ermöglicht Ihnen, Schritt aus, in der Mitte leicht ohne Verwendung
break
die ich denke, ist wichtig, und es erfordert nur minimale Berechnung, so dass ich denke, es ist die Schnellste. Es ist auch nicht erforderlich, dassli
eine Liste oder Tupel. Könnte es sein iterator.Ich gehe die anderen Lösungen hier für die Nachwelt.
Alle, die Lust iterator Zeug hat seinen Platz, aber nicht hier. Verwenden Sie den % - operator.
Nun, wenn Sie beabsichtigen, unendlich Blättern durch eine Liste, die dann nur dazu:
Ich denke, das ist einfacher zu verstehen als die andere Lösung mit
tee
und wahrscheinlich auch schneller. Wenn Sie sicher sind, dass die Liste nicht die Größe ändern, können Sie Eichhörnchen Weg eine Kopie vonlen(li)
und verwenden.Diese können Sie auch bequem aus dem Riesenrad in der Mitte, anstatt zu warten, für den Eimer herunter zu kommen, um den Boden wieder. Die anderen Lösungen (auch bei Ihnen) verlangen, dass Sie überprüfen
running
in der Mitte desfor
Schleife und dannbreak
.InformationsquelleAutor der Antwort
InformationsquelleAutor der Antwort John La Rooy
Können Sie einen paarweisen zyklischen iterator:
InformationsquelleAutor der Antwort Ants Aasma
InformationsquelleAutor der Antwort Ned Batchelder
Verwenden Sie die zip-Methode in Python. Diese Funktion liefert eine Liste von Tupeln, wobei die i-te Tupel enthält, die das i-te element von jedem der argument-Sequenzen oder iterables
InformationsquelleAutor der Antwort Nirmal
Einen eher anderen Weg, um dieses Problem zu lösen:
InformationsquelleAutor der Antwort Timothy Dalton
InformationsquelleAutor der Antwort Satheesh Alathiyur
InformationsquelleAutor der Antwort Anurag mishra