11 Listig: Mit Listen arbeiten
Wenn wir im täglichen Leben Informationen brauchen, schlagen wir manchmal in Listen und Tabellen nach. Wenn wir uns etwas merken wollen, schreiben wir auch Listen, wie zum Beispiel einen Einkaufszettel. Auch beim Programmieren können Listen ungeheuer nützlich sein.
In Variablen kann man alles Mögliche hineinschreiben. Ganzzahlen oder auch Kommazahlen, Werte wie True oder False. Aber immer nur einen Wert pro Variable.
Etwas anders sieht das bei den Zeichenketten (Strings) aus. Da können wir nämlich ganze lange Ketten von Zeichen (Text) hineinschreiben. Wusstest du, dass eine Zeichenkette in Python schon eine Form von Liste ist?
Zeichenketten sind Listen
Wir haben die Strings nur noch nicht wirklich als Liste verwendet, sondern so getan, als würde der gesamte Text, der in einer Variable steht, als feste Einheit zusammengehören
Nein, eine Zeichenkette ist eine Liste, eine Liste mehrerer einzelner Zeichen.
Wenn ich also schreibe:
name = "Erwin"
dann habe ich in der Variable name eine Liste von 5 Zeichen gespeichert.
Geh einmal ausnahmsweise wieder in die Konsole und gib die Zuweisung name = "Erwin" ein.
Kann ich die Elemente dieser Liste denn auch einzeln ansprechen?
Klar. Mit
print name[0] (die Null in eckigen Klammern!)
erhalte ich ein einzelnes »E«. Probiere auch das auf der Konsole aus.
Die einzelnen Zeichen in meiner Zeichenkette name sind nämlich bei Python intern durchnummeriert und beginnen bei 0. Element 0 ist das »E«.
name[1] ist das »r«
name[2] ist das »w«
name[3] ist das »i«
usw. …
Man kann also auf jeden einzelnen Buchstaben zugreifen, wenn man möchte. Die Position des Zeichens in der Zeichenkette nennt man den Index des Zeichens. Ebenso kann man auch gleichzeitig auf mehrere zusammenhängende Buchstaben zugreifen. Das geht so:
print name[0:2]
Ergebnis:
Er
Hier wird statt nur einem Index in eckigen Klammern eine Reichweite (range) von Zeichen angegeben. Das sind hier die Zeichen von 0 bis 2 (wobei das letzte Zeichen einer Reichweite bei Listen in Python nicht mehr dazugehört). Also Zeichen 0 und Zeichen 1.
print name[2:5]
ergibt dementsprechend:
win
[+] Zeichenketten
Zeichenketten können in Python auch als Liste behandelt werden. Auf die einzelnen Zeichen kann man mit den Indizes (Positionen) der Zeichen in eckigen Klammern zugreifen, beginnend mit 0. Eine Teilfolge von Zeichen (range) kann mit dem ersten und dem letzten (ausschließlich) Index, getrennt mit einem Doppelpunkt, angesprochen werden.
Auf die Weise kann man Zeichenketten auch neu zusammensetzen. Zum Beispiel so:
name = "Erwin Mayer"
umgedreht = name[6:11]+" "+name[0:5]
print umgedreht
Als Ergebnis wird ausgegeben:
Mayer Erwin
Lässt man den Wert vor dem Doppelpunkt weg, dann wird der Anfang der Zeichenkette verwendet, lässt man den Wert nach dem Doppelpunkt weg, dann wird das Ende der Zeichenkette verwendet.
name = "Otto Müller"
print name[:4]
ergibt »Otto«.
name = "Otto Müller"
print name[5:]
ergibt »Müller«.
Und
name = "Otto Müller"
print name[:]
ergibt »Otto Müller«.
Übrigens kann man auch auf die letzten Buchstaben einer Zeichenkette zugreifen, ohne zu wissen, wie lang die Zeichenkette ist. Der Index -1 ist nämlich automatisch der letzte Buchstabe der Zeichenkette, -2 der vorletzte usw.
name = "Erwin Mayer"
print name[-1]
Das ergibt ein »r«, den letzten Buchstaben.
Oder
dateiname = "meinSong.mp3"
endung = dateiname[-3:]
print endung
Das ergibt die Endung des Dateinamens, wenn diese drei Zeichen lang ist. In diesem Fall also »mp3«.