Eine Liste ist ein «zusammengesetzter» Datentyp und besteht aus mehreren Elementen.
In einer Liste können Zahlen, Strings (also Zeichenfolgen) oder Boole’sche Werte (True resp. False) gespeichert werden. Es sind auch gemischte Listen und Listen von Listen möglich.
Eine Liste definieren
Python erkennt Listen anhand der eckigen Klammern, vorgegebene Werte werden durch Kommas getrennt. Die Liste darf auch leer sein.
liste = [1, 17.5, "Guten Tag", True] # gemischte Liste
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"] # Liste mit 5 Elementen
monate = ["Januar"] # Liste mit einem Elemente
jahre = [] # leere Liste2
3
4
5
Eine Liste ausgeben
Es ist möglich, eine Liste mit Hilfe der print()-Funktion komplett auszugeben.
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
print(arbeitstage)2
Die Ausgabe sieht so aus:
['Mo', 'Di', 'Mi', 'Do', 'Fr']Soll die Liste an einen Text angehängt werden, ist es wie bei Zahlen nötig, die Liste in einen String umzuwandeln:
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
print("Die ersten fünf Tage der Woche heissen: " + str(arbeitstage))2
Auf ein bestimmtes Element zugreifen
Mit der Klammerschreibweise kann direkt auf ein bestimmtes Element der Liste zugegriffen werden. Dazu schreibt man den Index, also die Position des gewünschten Elements in die eckigen Klammern direkt hinter den Namen der Liste.
Wichtig
Beim Arbeiten mit Listen muss stets beachtet werden, dass das erste Element der Liste den Index 0 hat!
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
print(arbeitstage[0]) # gibt "Mo" aus
arbeitstage[0] = "So" # überschreibt den bisherigen Wert "Mo"
print(arbeitstage[0]) # gibt nun "So" aus2
3
4
5
Es ist sogar möglich, die Elemente von hinten zu zählen, dabei gibt man als Index negative Zahlen an:
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
print(arbeitstage[-1]) # gibt "Fr" aus
print(arbeitstage[-5]) # gibt "Mo" aus2
3
4
Die Länge einer Liste bestimmen
Mit Hilfe der Funktion len() kann die Länge (also die Anzahl Elemente) einer Liste bestimmt werden:
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
laenge = len(arbeitstage)
print("Die Liste enthält " + str(laenge) + " Elemente.")2
3
Wichtig
Da der Index des ersten Elementes 0 ist, ist der Index des letztes Elementes der Liste len(liste) - 1!
Prüfen, ob ein bestimmter Wert in einer Liste enthalten ist
Die Prüfung, ob der Inhalt einer Variablen in einer Liste enthalten ist, funktioniert wie folgt:
liste = ["Mo", "Di", "Mi", "Do", "Fr"]
wert = "Mi"
if wert in liste:
print(wert + " in liste " + liste)
else:
print(wert + " nicht in liste " + liste)2
3
4
5
6
7
Eine Liste abarbeiten
Häufig will man mit jedem Element einer Liste etwas Bestimmtes tun. Die bereits bekannte for-Schleife eignet sich hervorragend zum «Abarbeiten» einer Liste. Im nachfolgenden Beispiel wird jedes Element auf einer eigenen Zeile ausgegeben.
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
for arbeitstag in arbeitstage:
print(arbeitstag)2
3
4
Die Variable arbeitstag enthält somit bei jedem Schleifendurchgang ein neues Element der Liste.
Hinweis
Meist wird für die Liste ein Begriff in der Mehrzahl (arbeitstage) gewählt, während für ein einzelnes Element die Einzahl verwendet wird. So entstehen keine Missverständnisse.
Eine Liste abarbeiten über den Index
Eine andere Möglichkeit, ein Listenelement nach dem anderen zu besuchen, führt über den Index:
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
feierabend = ["17:30", "18:30", "18:30", "20:00", "17:00"]
for index in range(0, len(arbeitstage)):
print(arbeitstage[index] + ": " + feierabend[index])2
3
4
5
Um den Index in einem sinnvollen Bereich zu halten, erzeugen wir mit der range()-Funktion einen Zahlenbereich von 0 bis zur Länge der Liste. Praktisch ist, dass die Zahl, die der Länge entspricht, selber nicht mehr zum Bereich gehört – wie es auch kein Element der Liste mit Index = Länge der Liste gibt.
In der Liste selber greifen wir mit der von oben bekannten Klammerschreibweise auf das entsprechende Element zu.
Häufig verwendet man anstelle von index schlicht die Variable i. Die Variable i kommt also in Schleifen besonders häufig vor:
arbeitstage = ["Mo", "Di", "Mi", "Do", "Fr"]
feierabend = ["17:30", "18:30", "18:30", "20:00", "17:00"]
for i in range(0, len(arbeitstage)):
print(arbeitstage[i] + ": " + feierabend[i])2
3
4
5
Hinweis
Diese Art der Schleife ist besonders dann hilfreich, wenn wir die Position der Elemente kennen müssen. Im obigen Beispiel ist dies nötig, um pro Wochentag die richtige Feierabend-Zeit anzuzeigen.
Aufgabe: Wochentage
Erstelle eine Liste mit sämtlichen Wochentagen und gibt diese auf drei Arten aus:
- als Liste,
- als Liste in einem Satz und
- als einzelne Elemente (jeweils eines pro Zeile).
Lösung: Wochentage (nicht angemeldet)
Diese Lösung ist nur für angemeldete Benutzer zugänglich – wenn die LK die Lösung freigegeben hat. Bitte melde dich an, um die Lösung einsehen zu können.Aufgabe: Notendurchschnitt
Erstelle eine Liste mit einigen Noten und berechne dann den Durchschnitt (ohne dass du die Anzahl Noten direkt als Zahl in die Formel schreibst!) und gib ihn aus.
mehr
Du brauchst eine Variable, in der du die Noten aufsummierst. Anschliessend kannst du die Summe durch die Anzahl Elemente der Liste (sprich deren Länge) dividieren.
Lösung: Notendurchschnitt (nicht angemeldet)
Diese Lösung ist nur für angemeldete Benutzer zugänglich – wenn die LK die Lösung freigegeben hat. Bitte melde dich an, um die Lösung einsehen zu können.Aufgabe: Funktion
Falls der Durchschnitt mehrmals (z.B. für mehrere Fächer) ausgerechnet werden soll, ist es sinnvoll, eine Funktion zu definieren. Schreibe eine Funktion durchschnitt(noten), die eine Liste von Noten erwartet und daraus den Durchschnitt berechnet. Das Resultat soll mit return zurückgegeben werden. Erstelle mehrere Listen und rufe die Funktion für alle Listen auf und gib die Resultate aus.
mehr
Das meiste hast du bereits programmiert. Überlege, welche Zeilen in die Funktion übernommen werden sollen.
Lösung: Funktion (nicht angemeldet)
Diese Lösung ist nur für angemeldete Benutzer zugänglich – wenn die LK die Lösung freigegeben hat. Bitte melde dich an, um die Lösung einsehen zu können.Aufgabe: Gewichtung
Neben der Notenliste gibt es eine weitere Liste, die die Gewichtung der einzelnen Noten enthält. Rechne nun den richtigen Durchschnitt aus.
mehr
Nun muss die andere for-Schleife verwendet werden, da für jede Note (an einer bestimmten Position) die korrekte Gewichtung aus einer anderen Liste (an derselben Position) verwendet werden muss. Natürlich muss nun auch die Anzahl der Noten entsprechend der Gewichtung angepasst werden.