Wie man in Python-Liste (Countdown)

Wie schließe ich in Python-Liste?

beispielsweise

Schleife:

L = [1,2,3] for item in L print item #-->1,2,3 

Schleife:

 L = [1,2,3] for ??? print item #-->3,2,1 

Danke

4 Solutions collect form web for “Wie man in Python-Liste (Countdown)”

Eine andere Lösung:

 for item in L[::-1]: print item 

Batterien enthalten.

 for i in reversed([1, 2, 3]): print i 

Das Aufschneiden der Liste ( ls[::-1] ) ist ideal für eine umgekehrte Kopie, aber auf meiner Maschine ist es langsamer für die Iteration, auch wenn die Liste bereits im Speicher ist:

 >>> def sliceit(x): ... l = range(x) ... for i in l[::-1]: ... i ... >>> def reverseit(x): ... l = range(x) ... for i in reversed(l): ... i ... >>> %timeit sliceit(100) 100000 loops, best of 3: 4.04 µs per loop >>> %timeit reverseit(100) 100000 loops, best of 3: 3.79 µs per loop >>> %timeit sliceit(1000) 10000 loops, best of 3: 34.9 µs per loop >>> %timeit reverseit(1000) 10000 loops, best of 3: 32.5 µs per loop >>> %timeit sliceit(10000) 1000 loops, best of 3: 364 µs per loop >>> %timeit reverseit(10000) 1000 loops, best of 3: 331 µs per loop 

Wie es oft in Fällen wie diesen der Fall ist, ist der Unterschied ziemlich vernachlässigbar. Es könnte für verschiedene Versionen von Python unterschiedlich sein (ich habe Python 2.7 für den obigen Test verwendet). Der wirkliche Vorteil der Verwendung von reversed ist Lesbarkeit – es wäre in den meisten Fällen vorzuziehen, auch wenn es ein paar zusätzliche Mikrosekunden kostet.

Umgekehrt die Reihenfolge.

 L = [1,2,3] for item in reversed(L) print item #-->3,2,1 

Ich weiß, dieser Thread ist jetzt Jahre alt, aber ein Kommentar unter der akzeptierten Antwort enthält die Behauptung, dass mit [::-1] schneller als mit reversed() . Dies ist nur wahr, wenn Ihre Liste explizit in den Speicher gelegt wird, was bei einem Countdown nicht notwendig ist. Ansonsten ist es langsamer:

 >>> timeit.Timer(stmt="range(1,1000)[::-1]").timeit() 10.801303316066111 >>> timeit.Timer(stmt="list(reversed(xrange(1,1000)))").timeit() 9.484562358901144 

und [::-1] verwendet mehr Platz als reversed .

  • Python Link zu File Iterator nicht Iterating
  • Wie gehe ich zum nächsten Index?
  • Schleifenzeichen A / B abwechselnd
  • Abflachen einer sehr verschachtelten Schleife
  • Ich versuche, meine Funktion zu beheben
  • Wenn sonst statement nicht nach dem elif korrekt folgt [duplizieren]
  • Pythonische Möglichkeit, FOR-Loop und IF-Anweisung zu kombinieren
  • Senden von StopIteration auf Schleife von außerhalb des Iterators
  • Ablehnen oder Schleifen der Benutzereingabe, wenn zwei Bedingungen nicht erfüllt sind
  • Was ist schneller für die Schleife mit Aufzählung oder für Schleife mit xrange in Python?
  • Raw_input und timeout [duplizieren]
  • Python ist die beste Programmiersprache der Welt.