2016-06-07 19 views

Antwort

7

Wie Henry darauf hingewiesen hat, zeigen negative Indizes das Zählen von rechts an.

Natürlich ist A0, B ist 1 und C2 ist, wenn von links gezählt:

-> -> -> 

A | B | C 

0 | 1 | 2 

beim Rückwärts gehen, -1 wird das Ende des Arrays, etwa so:

<- <- <- 
A | B| C 
-3|-2|-1 

Für mehr Kontext, sieh es so, als ob zwei Kopien aufgereiht wären:

A | B | C | A | B | C 
-3| -2| -1| 0 | 1 | 2 

Gemäß the documentationString und List Objekte unterstützen negative Indizes, aber Range-Objekte nicht.

+1

Anstatt es als "von rechts beginnend" zu betrachten, denke ich, dass es etwas robuster ist, es als den endgültigen Index "Länge + Negativ_Index" zu betrachten. Da die Länge 1 mehr als der letzte Index ist, funktioniert es. Das Problem mit "von rechts anfangen" ist, dass es eine Asymmetrie gibt, die von links (bei 0) und von rechts beginnend (bei [negativ] 1?) Beginnt, was die ursprüngliche Verwirrung von OP zu sein scheint. – mgilson

4

Ein negativer Index bedeutet "Start von rechts zu zählen".


Um es anders auszudrücken: sequence[0] ist der Beginn der Sequenz, warum würden Sie sequence[-1] erwarten etwas anderes als das Ende der Sequenz zu sein?

0 1 2 
a b c 

-3 -2 -1 
a b c 
Verwandte Themen