Python-Liste / Unterliste Auswahl -1 Verrücktheit
Also ich habe das Spiel mit python und bemerkte etwas, das scheint ein wenig seltsam. Die Semantik von -1
bei der Auswahl aus einer Liste scheinen nicht beständig zu sein.
Also ich habe eine Liste von zahlen
ls = range(1000)
Wird das Letzte element der Liste, wenn der Kurs ls[-1]
aber wenn ich ein Unterverzeichnis an, so daß ich alles von sagen, der Mittelpunkt, um das Ende würde ich tun
ls[500:-1]
aber dies bedeutet nicht, geben Sie mir eine Liste, das Letzte element in der Liste, sondern eine Liste, die alles BIS ZUM letzten element. Aber wenn ich
ls[0:10]
Bekomme ich eine Liste, die auch die Zehntel-element (also der selector sollte inclusive sein), warum wird dann nicht Arbeit für -1
.
Kann ich natürlich tun ls[500:]
oder ls[500:len(ls)]
(das wäre albern). Ich Frage mich, was der deal mit -1 war, merke ich, dass ich es nicht brauchen es.
InformationsquelleAutor der Frage Matti Lyra | 2010-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
list[first:last]
last
ist nicht im Lieferumfang enthalten.10th element ist
ls[9]
imls[0:10]
gibt es nichtls[10]
.InformationsquelleAutor der Antwort dugres
Wenn Sie wollen zu bekommen eine sub-Liste einschließlich das Letzte elementverlassen Sie Leerzeichen nach Doppelpunkt:
InformationsquelleAutor der Antwort mcane
Bekomme ich konsequentes Verhalten für beide Instanzen:
Beachten Sie jedoch, dass der zehnte element der Liste ist unter index 9da die Liste ist 0-indiziert. Das könnte sein, wo Sie Ihre hang-up ist.
In anderen Worten,
[0:10]
geht nicht aus dem index 0-10, es effektiv geht von 0 bis zehnten element (die bekommt Sie Indizes 0-9, seit der 10 nicht inklusive ist am Ende der Scheibe).InformationsquelleAutor der Antwort eldarerathis
-1 ist nicht besonderes in dem Sinne, dass die Sequenz wird rückwärts gelesen, sondern wickelt sich um die enden. Solche, die minus eins, also null minus eins, exklusive (und, für einen positiven Schritt, der Wert, die Sequenz ist zu Lesen "von Links nach rechts".
also für
i = [1, 2, 3, 4]
i[2:-1]
bedeutet ab Punkt zwei zu Anfang minus eins (oder, um auf das Ende')die Ergebnisse in[3]
.Die -1. element, oder element 0 rückwärts 1 ist der Letzte
4
, aber da es exklusiv ist, erhalten wir 3.Ich hoffe das ist etwas verständlich.
InformationsquelleAutor der Antwort Stefano Palazzo
Es scheint ziemlich konsistent für mich, bei positiven Indizes sind ebenfalls nicht inklusive. Ich denke, du machst es falsch. Daran erinnern, dass range() ist auch nicht inklusive, und das Python-arrays sind 0-indiziert, hier ist ein Beispiel-python-session zu veranschaulichen:
InformationsquelleAutor der Antwort Yoni Samlan
beim Slicen ein array;
nimmt die Scheibe aus dem element y bis zu und einschließlich, aber nicht x sein. wenn Sie die negative Indizierung entspricht der Verwendung
so es so die Scheibe wäre bis das Letzte element, aber es würde nicht zählen (pro Scheibe)
InformationsquelleAutor der Antwort Andy