Eine Liste ist eine Reihe von mehreren Variablen, die unter einem einzelnen Namen zusammengefasst werden. Anstatt ein Programm mit vielen Variablen x0
, x1
, x2
zu schreiben, kannst du eine einzelne Variable x definieren und ihre einzelnen Mitglieder x[0]
, x[1]
, x[2]
, etc aufrufen. Was noch wichtiger ist: du kannst andere Ausdrücke und Variablen in die eckigen Klammern setzen, wie x[i]
und x[i+1]
. Dies erlaubt es uns, mit beliebig großen Datensätzen umzugehen, indem wir nur ein einziges kleines Stück Code benutzen.
Ein Weg, eine Liste zu erzeugen ist es, mehrere Variablen beizufügen, die durch Kommas in eckigen Klammern getrennt werden:
myList = ["the first value in the list", 1999, 4.5]Dies erzeugt eine Liste, die den Namen
myList
und eine Länge von 3 hat. Jedes Element der Liste bekommt eine Nummer zugeordnet, die man seinen Index nennt: das erste Element hat den Index 0, das nächste hat den Index 1 und so weiter. Die individuellen Variablen, aus denen die Liste besteht, haben die Namen
«listName»[«indexNumber»]
Also ist in diesem Beispiel myList[0]
eine Variable, deren Wert folgende Zeichenkette ist: "the first value in the list"
und print(myList[2])
ergibt 4.5
. Du kannst außerdem die Werte der einzelnen Elemente der Liste ändern und komplette Listen ausgeben:
Wie du sehen kannst, verhält sich numbers[0],
als ob es selbst eine Variable sei und verändert werden könnte.
Versuche als nächstes den finalen Zustand des folgenden visualisierten Beispiels vorauszusagen,
vergleiche ihn dann, indem du den Code laufen lässt.
stuff = [2, 25, 80, 12] stuff[stuff[0]] = stuff[3] print(stuff)
stuff[3]
auf der rechten Seite ist 12
. Auf der linken Seite ist stuff[0]
gleich 2
, also verweist stuff[stuff[0]]
auf die Variable stuff[2]
. Der Wert dieser Variable wird aufgewertet (von 80
) auf 12
.Was Python eine Liste nennt, würde in den meisten anderen Programmiersprachen als Array bezeichnet werden. Python hat außerdem etwas anderes und wesentlich fortgeschritteneres, das es als Array bezeichnet. |
Ein üblicher Fehler
Wenn du versuchst, Python nach einem Index zu fragen, der nicht existiert, bekommst du eine Fehlermeldung:
Im obigen Beispiel, weil myList
die Länge 4 hat und der erste Index 0 ist, ist der maximal zulässige Index 3. Wenn du nun nach einem Index von 4, 5 oder höher fragst, bekommst du diese Art von Fehler.
Übliche hilfreiche Operationen
Die Länge einer Liste: len(«list»)
Um die Anzahl von Elementen in einer Liste zu bestimmen, rufe die Funktion len()
auf dieser Liste auf. Schau dir an, wie range
im folgenden Beispiel verwendet wird.
Es ist üblich, len
zu benutzen, um Code zu schreiben, der mit Listen jeglicher Länge funktioniert, wie im Beispiel oben und der nächsten Übung.
Sind Listen wie Zeichenketten?
Mittlerweile solltest du gemerkt haben, dass die Operationen, die auf Listen ausgeführt werden, ziemlich ähnlich sind, wie Zeichenketten bzw. Strings: bei beiden ist die Länge anhand der len()
Funktion ersichtlich und beide verwenden X[«index»]
, um einzelne Elemente auszuwählen. Listen und Strings sind tatsächlich verwandt: sie werden von Python beide als "sequence types" bezeichnet. Der eine große Unterschied ist, dass einzelne Zeichen in Zeichenketten nicht verändert werden können.
Aus diesem Grund nennt man Listen veränderlich und Zeichenketten unveränderlich; du wirst ein paar weitere Informationen darüber sehen in Lektion 17.
Verkettung und Erzeugung
Aus der Lektion über den Typ str
kannst du dich vielleicht noch daran erinnern, dass es möglich ist, +
zu verwenden, um zwei Strings miteinander zu verschmelzen (verketten). Das Gleiche kannst du mit Listen machen:
Ganz ähnlich kannst du das Multiplikationszeichen * benutzen, um eine Liste durch Wiederholungen zu verlängern. Dies ist hilfreich, um eine neue Liste zu erzeugen, die so lang ist, wie du sie haben möchtest.
Um die nächste Übung zu lösen, verwende einen der Operatoren, die wir gerade eingeführt haben, und eine for
Schleife.
Am Ende: Negative Indizes
Um an das letzte Element einer Liste zu kommen, verwende
«listName»[-1]
Allgemeiner gesprochen, gibt L[-k]
das k-te
Element vom Ende der Liste aus. Python behandelt dies intern, indem es das Element zu L[len(L)-k]
übersetzt. Diese Abkürzung funktioniert auch für Zeichenketten!
max
und sum
Die Funktion max
, die wir bereits gesehen haben, kann auch bei einer Liste von Zahlen verwendet werden: sie gibt die größte Zahl in der Liste aus. Für Listen mit Zahlen gibt es auch die Funktion sum(L)
, welche die Summe der Zahlen in der Liste L
liefert. Übrigens: Während man max
auch für Listen mit Elementen anderer Typen (wie z.B. characters) verwenden kann, funktioniert sum
nur für Zahlen.
Durch Listen schleifen
Es ist sehr üblich (wie in der vorherigen Übung), durch jeden Wert einer Liste zu schleifen. Python erlaubt es, eine Abkürzung zu benutzen, um diese Art von Operation durchzuführen, die man üblicherweise eine "für alles" Schleife oder eine "für jedes" Schleife nennt. Um genau zu sein: wenn L eine Liste ist, macht dieser Code
for x in L: «loop body block»das folgende: zuerst wird x auf den ersten Wert in
L
eingestellt und der Körper wird ausgeführt; dann wird x auf den zweiten Wert in L
eingestellt und der Körper ausgeführt; dies wird für alle Unterpunkte von L
genau so durchgeführt.
Hier ist ein visualisiertes Beispiel, welches die Elemente einer Liste ausgibt:
"Für alle" Schleifen funktionieren auch für Zeichenketten: versuche for char in "hello"
.
Gut gemacht! Du kannst zur nächsten Lektion weiter, oder ein paar Bonusübungen weiter unten ausprobieren.
x
, der mystery(x)
dazu bringen wird, unendlich zu laufen?
def mystery(x): a = [0, 4, 0, 3, 2] while x > 0: x = a[x] return "Done"