Die Umkehrung einer Liste mit slice-notation
im folgenden Beispiel:
foo = ['red', 'white', 'blue', 1, 2, 3]
wo: foo[0:6:1]
druckt alle Elemente foo. Allerdings foo[6:0:-1]
wird, weglassen der 1. oder 0. element.
>>> foo[6:0:-1]
[3, 2, 1, 'blue', 'white']
Verstehe ich, dass ich verwenden können, foo.reverse() oder foo[::-1] drucken Sie die Liste in umgekehrter, aber ich versuche zu verstehen, warum die foo[6:0:-1] funktioniert nicht, drucken Sie die gesamte Liste?
- Beachten Sie auch die
foo[7:None:-1]
Möglichkeit 🙂 - Ich habe nie verwendet, python, bevor Sie versuchen einfach nur zu verstehen, slice-notation, meine Frage ist, warum foo[6:0:-1] ist nicht das wegwerfen des index-Fehlers, funktioniert die python nicht darum kümmern? weil 6 index ist nicht verfügbar im obigen Beispiel-array.
- Schneiden ist nicht indiziert und nicht werfen einen Fehler, wenn man über die Grenzen. Indizierung bedeutet Ausnahme auslösen, wenn die out-of-bounds, wenn.
InformationsquelleAutor user737079 | 2011-05-03
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Slice-notation, kurz:
Wenn das erste element, die beim Rückwärtsfahren eine Liste, lassen Sie das mittlere element leer ist, wie dieses:
Finden Sie auch einige gute Informationen über die Python-Scheiben im Allgemeinen hier:
Erklären Python ' s slice-notation
[ <first element to include> : <first element to exclude> : <step> ]
ist die klarste Erklärung der slice-syntax, die ich gesehen habe. Nannte es "erstes element ausschließen" lässt es wirklich offensichtlich, was vor sich geht.<first element to include>
oder<first element to exclude>
es ist die Indexierung wieder von der Liste, so-1
ist das Letzte element,-2
ist der zweite zum letzten element, etc. So zum Beispielx[-1:-4:-1]
würde die letzten drei Elemente derx
in umgekehrter Reihenfolge. So könnte man interpretieren dies als "Bewegung nach hinten nehmen, jedes element (-1
Schritt) aus dem letzten element in der Liste (-1 <first element to include>
) bis, bis, aber nicht einschließlich das vierte element von end (-4 <first element to include>
)".<step>
ist-1
), es hilft mir zu denken<first element to include, moving from right to left>
. So, um dien
"linke" Elemente aus einer Liste in umgekehrter Reihenfolge:foo[n-1::-1]
. Um dien
"Rechte" Elemente in umgekehrter Reihenfolge:foo[-1:-n-1:-1]
.Wenn Sie Probleme beim erinnern slice-notation, könnten Sie versuchen dabei die Hokey Cokey:
[In: Aus: Shake it all about]
[Erste element include: Erstes element zu verlassen aus: Die Schritt zu verwenden]
YMMV
Weil der mittlere Wert ist die exklusive, anstatt inclusive, stop Wert. Die Intervall-notation ist [start, stop).
Dies ist genau, wie der [x]Reihe funktioniert:
Diejenigen sind, die indices enthalten, die in die resultierende Liste, und Sie enthalten keine 0 für das erste Element.
Andere Möglichkeit es zu betrachten ist:
Den index 6 ist über (eine-in der Vergangenheit, genau) die gültigen Indizes L, so schließt ihn aus der Reihe als ausgeschlossen Stopp-Wert:
Gibt noch Sie Indizes für jedes Element in der Liste.
range
können es tun, aber Scheibe kann es nicht tun, weil-1
ist das Letzte element. Sol=[1, 2, 3]
,l[2:-1:-1] == []
.Diese Antwort vielleicht ein wenig veraltet, aber es könnte hilfreich sein für jemanden, der stecken mit dem gleichen problem.
Sie bekommen können, rückwärts-Liste mit einem beliebigen Ende - bis zur Indexposition 0, das anwenden der zweiten in-place-Scheibe wie diese:
Verwenden
Dies zeigt die Rückseite der Liste aus dem end-element an den Anfang,