290
Objekte und Methoden
Kapitel
11
Oft ist es sehr nützlich, dass Python auch negative Indizes versteht:
>>> stringB
'bad'
>>> stringB[-1]
'd'
>>> stringB[-2]
'a'
>>> listeC
[1, [2, 3], [4, [5, 6]]]
>>> listeC[-3]
1
Negative Indizes bedeuten also, dass die Elemente einer Sequenz vom letz-
ten, das den Index -1 hat, weg nach vorn gezählt werden. Denke so: Wenn
du bei der hinteren schließenden Klammer der Liste stehst – wie viele
Schritte musst du zurückgehen, um zum Element zu kommen?
Erzeugen von Sequenzen mit den Operatio-
nen + und *
Neben dem direkten Anschreiben gibt es noch andere Arten, Sequenzen zu
erzeugen. Eine Art, die für alle Sequenzen funktioniert, ist die Verkettung,
eine andere die Vervielfachung von Sequenzen gleichen Typs:
>>> listeA
[3, 3.5, 4, 4.5]
>>> listeB
['red', 'blue', 'yellow']
>>> listeA + listeB
[3, 3.5, 4, 4.5, 'red', 'blue', 'yellow']
>>> listeA * 3
[3, 3.5, 4, 4.5, 3, 3.5, 4, 4.5, 3, 3.5, 4, 4.5]
>>> stringA
'X'
>>> stringB
'bad'
>>> (stringA + stringB) * 5
'XbadXbadXbadXbadXbad'
>>> 3*tupelC + tupelA
('fritz', 'fritz', 'fritz', 1, 3)
291
Sequenzen
Kommen wir nochmals auf das Beispiel weiter oben zurück:
>>> (3 + 4) * 7
49
>>> (3 + 4,) * 7
(7, 7, 7, 7, 7, 7, 7)
(3 + 4)
ist eben im Gegensatz zu
(3 + 4,)
kein Tupel, sondern eine
Zahl!
Clara Pythias Python-Special: Sequenzen,
scheibchenweise:
Oft braucht man von Sequenzen nicht einzelne Elemente, sondern Teil-
bereiche. Python hat ein einfaches Verfahren, »Scheiben« aus Sequenzen
herauszuschneiden. (Im Englischen heißen diese Dinger
slices
. Im Deut-
schen spricht man manchmal auch von Abschnitten.) Scheiben einer Se-
quenz sind immer
neue
Objekte vom selben Typ. Schauen wir uns das an
einem Beispiel an:
>>> neue_liste = listeA + listeB
>>> neue_liste
[3, 3.5, 4, 4.5, 'red', 'blue', 'yellow']
>>> neue_liste[2]
4
>>> neue_liste[5]
'blue'
Bis hierher lief alles wie erwartet. Nun machen wir »Scheiben«:
>>> neue_liste[2:5]
[4, 4.5, 'red']
Dies enthält die Elemente 2 bis 4 von
neue_liste
>>> neue_liste[3:4]
[4.5]
Dies enthält nur das Element mit Index 3 von
neue_liste.
Neugierige
Geister wollen jetzt sicher wissen, was herauskommt, wenn die beiden
Indizes der Scheibe gleich sind:
>>> neue_liste[3:3]
[]
Solche Scheiben werden durch ein
Paar
von Indizes festgelegt:
[a:b]
.
Die entsprechende Scheibe enthält als erstes Element das Element der
ursprünglichen Liste mit dem Index a, das mit dem Index b aber gerade
nicht mehr. Du kannst dir das mit folgendem Bild veranschaulichen.
292
Objekte und Methoden
Kapitel
11
Stelle dir das so vor, dass die Indizes jeweils zwischen die Elemente der
Liste zeigen, und zwar jeder vor das Element mit der entsprechenden
Nummer, dann enthält die Scheibe gerade die Elemente zwischen den
Indizes.
Dasselbe geht für Listen, Tupel und Strings, sogar für direkt hingeschrie-
bene:
>>> stringC[11:30]
'und noch eine Zeile'
>>> tupelB[1:2]
((2, 3),)
>>> "Barbara"[3:6]
'bar'
Lässt du in einer Scheibe einen der beiden Indizes weg, dann wird die
Scheibe vom entsprechenden Ende der Ausgangssequenz gebildet. Das
heißt, sie wird vom Anfang weg gebildet, wenn der erste Index fehlt:
>>> neue_liste[:3]
[3, 3.5, 4]
neue_liste[:3]
bedeutet also dasselbe wie
neue_liste[0:3]
.
Ebenso ist
neue_liste[1:]
dasselbe wie
neue_liste[1:len(neue_liste)]
:
>>> neue_liste[1:]
[3.5, 4, 4.5, 'red', 'blue', 'yellow']

Get Python für Kids now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.