[Python-de] Index-Bereiche bei Slices

Achim Domma (Procoders) domma at procoders.net
Mon Aug 16 10:39:51 CEST 2004


Hi,

> Was ich meinte, ist: Warum bekommt der zweite Index eines Slice nicht
> den Index des betreffenden Elements aus der Liste, sondern muss um
> eins größer gewählt werden?
> 
> Naheliegender(?) wäre doch:
> 
> L = [34, 7, 19, 23]
> L[1] == 7             # stimmt in Python
> L[3] == 23            # stimmt in Python
> L[1:3] = [7, 19, 23]  # stimmt _nicht_ in Python; L[1:3] ergibt [7, 19]
>           ^       ^
>           L[1]    L[3]

das ist nicht naheliegender, sondern nur die Vorstellung die du im Kopf
hast, weil du's evtl. so gewohnt bist. Die Frage läßt sich erstmal
reduzieren auf: Ist es ein geschlossenes oder halboffenes Intervall. Bei
Python hat man sich für halboffen entschieden.
Richtig und falsch in dem Sinne gibt's da nicht, aber ich schätze der Grund
ist Code, der besser lesbar ist - wofür Python ja bekannt ist. In C++ zeigen
Iterator aus der STL am Schluß auch hinter das letzte Element. Damit lassen
sich viele Algorithmen besser schreiben.

X = L[0:len(L)]	# würdest du hier gerne len(L)-1 schreiben?

X = L[0:2] + L[2:len(L)]	# finde ich sauber als [0:2]+[3:len(L)]

Kann natürlich sein, daß ich C++ 'geschädigt' bin, was ich aber nicht
schlecht finde! ;-)

Gruß,
Achim