4 Stimmen

Umkehrung der Python-Liste: [::-1]?

Ich kann keine Informationen finden über [::-1] . In der wikibooks python tutorial Es gibt einen Abschnitt über nicht-kontinuierliche Listen, aber es gibt keine Informationen über Parameter < 0. Die Auswirkungen sind klar, aber wie erklären Sie das?

Beispiel für die Verwendung:

>>> foo = [1, 2, 3]
>>> foo[::-1]
[3, 2, 1]

8voto

Mariusz Jamro Punkte 28908

Die Syntax lautet wie folgt:

foo[start:end:step] # begin with 'start' and proceed by step until you reach 'end'.

Also foo[::-1] bedeutet entire list with step=-1 also eigentlich eine Umkehrung der Liste.

Véase diese Antwort für eine ausführliche Erklärung.

2voto

yan Punkte 196

Nur eine Sache ist hinzuzufügen:

foo[::-1]

erstellt eine Kopie des angegebenen Arrays, ohne foo selbst zu verändern Man kann sie wie folgt zuweisen:

foo = [1,2,3]
bar = foo[::-1]
# print foo --> [1,2,3]
# print bar --> [3,2,1]

Aber um foo zu aktualisieren, verwenden Sie:

foo.reverse()

wird bevorzugt

2voto

Ein negativer Schritt verhält sich genauso wie in range(start, stop, step) . Bei der negativen Stufe ist zu beachten, dass stop ist immer das ausgeschlossene Ende, egal ob es höher oder niedriger ist.

Es überrascht die Menschen häufig, dass '0123456789'[5:0:-1] == '54321' , nicht '43210' . Wenn Sie eine Teilsequenz in umgekehrter Reihenfolge wünschen, ist es viel sauberer, die Umkehrung separat durchzuführen. Z.B. ein Zeichen von links abschneiden, zwei von rechts, dann umkehren: '0123456789'[1:-2][::-1] == '7654321' s. Wenn Sie keine Kopie brauchen, sondern nur eine Schleife machen wollen, ist es noch besser lesbar mit reversed() :

for char in reversed('0123456789'[1:-2]):
    ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X