[Python-de] Index-Bereiche bei Slices

Stefan Schwarzer sschwarzer at sschwarzer.net
Mon Aug 16 01:30:56 CEST 2004


Hallo Jan,

danke für die Antwort. :-)

On Sat, 2004-08-14 22:51:43 +0200, Jan Voges wrote:
Content-Description: Mail message body
> [Sorry, Stefan, für die Email. Also das Ganze nochmal an die Liste]

kein Problem.

> On 14 Aug 2004 at 20:54, Stefan Schwarzer wrote:
> > bekommt und nicht etwa [37, 8, 9], die Werte für die in der
> > Slice-Syntax angegebenen Indices 1 bis 3. Gibt es eine für
> > Python-Einsteiger nachvollziehbare Erklärung, warum sich Slicing (und
> > die range-Anweisung) so verhalten, wie sie es tun?
> 
> Die 1 und 3 stehen ja eher für die Zwischenräume, an denen die Sequenz
> aufgetrennt wird.
> 
> Siehe auch "3.1.2 Strings" im Tutorial:
> >>>>>>>>>>
> The best way to remember how slices work is to think of the indices as
> pointing between characters, with the left edge of the first character
> numbered 0. Then the right edge of the last character of a string of n
> characters has index n, for example: 
> 
> 
>  +---+---+---+---+---+ 
>  | H | e | l | p | A |
>  +---+---+---+---+---+ 
>  0   1   2   3   4   5 
> -5  -4  -3  -2  -1
> <<<<<<<<<<
> 
> Anfänglich leuchtete mir nicht ein, warum das letzte Element mit bla[-1]
> angesprochen wird und nicht mit bla[-0] (mal vom Problem abgesehen, 0 und
> -0 voneinander unterscheiden zu können). bla[-1] muss man eben auch lesen
> als das Element hinterm vorletzten Zwischenraum.

Das erklärt ja durchaus, wie man sich das tatsächlich in Python
verwendete Slicing erklären kann. Worauf ich aber eher abzielte bzw.
abzielen wollte: _Warum_ wurde die Konvention so gewählt? (Und nicht:
Wie kann man die Konvention _im nachhinein_ erklären?)

Viele Grüße
 Stefan