Teil 9: Listen
Lernziele
- Eine Liste anlegen und über den Index auf Elemente zugreifen
- Die Länge einer Liste bestimmen
- Durch eine Liste iterieren, auf zwei verschiedene Arten
- Elemente hinzufügen, entfernen und suchen
- Verschachtelte Listen für Gitter und Spielbretter verwenden
Neue Befehle und Zeichen:
[ ]legt eine Liste an und greift auf Elemente zulen()gibt die Anzahl Elemente zurück.append()hängt ein Element hinten an.remove()entfernt ein Element nach Wert.pop()entfernt ein Element nach Position.index()sucht die Position eines Werts
Listen
Eine Liste fasst mehrere Werte unter einem Namen zusammen. Statt x0, x1, x2 schreibt man eine einzige Variable und spricht die Werte über ihre Position an.
meine_liste = ["erster Wert", 1999, 4.5]
print(meine_liste[0])
print(meine_liste[2])
print(meine_liste)
erster Wert
4.5
['erster Wert', 1999, 4.5]
Der Index
Mit len bestimmst du die Anzahl Elemente:
zahlen = [3, 5, 1, 7, 2]
print(len(zahlen))
Durch eine Liste laufen
Es gibt zwei Wege. Der erste läuft über die Indizes, der zweite direkt über die Elemente.
faecher = ["Franzoesisch", "Englisch", "Mathematik"]
for i in range(len(faecher)):
print(faecher[i])
for fach in faecher:
print(fach)
Die zweite Variante ist kürzer und lesbarer. Den Index brauchst du nur, wenn du ihn wirklich benötigst, etwa um die Position mit auszugeben.
Elemente hinzufügen und entfernen
liste = [1, 2, 3]
liste.append(4)
liste.remove(2)
liste.pop(0)
print(liste)
[3, 4]
Die vier wichtigsten Methoden
Listen in Listen
Eine Liste darf Listen enthalten. So entstehen Gitter, zum Beispiel für ein Spielbrett.
brett = [
["X", " ", " "],
[" ", "O", "X"],
[" ", "O", " "]
]
for zeile in brett:
print(zeile)
print(brett[1][2])
Der erste Index wählt die Zeile, der zweite die Spalte. brett[1][2] ist also das dritte Feld der zweiten Zeile.
Aufgaben
Aufgabe 9.1Sage die Ausgabe voraus, ohne das Programm auszuführen. Erkläre, was mit dem Index passiert.
stuff = [2, 25, 80, 12] stuff[stuff[0]] = stuff[3] print(stuff)
Aufgabe 9.2Was erzeugen diese beiden Zeilen? Sage es zuerst voraus.
Aufgabe 9.3Schreibe die Funktion
middle(L), die das mittlere Element einer Liste zurückgibt. Die Liste hat immer eine ungerade Länge.
Aufgabe 9.4Schreibe die Funktion
natuerliche_zahlen(n), die eine Liste mit den Zahlen von 1 bisnzurückgibt.
Aufgabe 9.5Schreibe die Funktion
prod(L), die das Produkt aller Elemente einer Liste berechnet.
Aufgabe 9.6Schreibe die Funktion
durchschnitt(L), die den Mittelwert einer Zahlenliste berechnet.
Aufgabe 9.7Entferne alle doppelten Werte aus einer Liste, ohne fertige Hilfsmittel zu verwenden.
Aufgabe 9.8Erzeuge eine Liste mit den Zahlen 1 bis 20 und übernimm daraus nur die Vielfachen von 3 in eine zweite Liste.
Weitere Aufgaben
Zusatzaufgabe 9.9Frage fünf Wörter ab, speichere sie in einer Liste und gib sie in umgekehrter Reihenfolge aus.
Zusatzaufgabe 9.10Für welchen Wert von
xläuftmystery(x)endlos? Begründe, ohne das Programm zu starten.def mystery(x): a = [0, 4, 0, 3, 2] while x > 0: x = a[x] return "Done"
Zusatzaufgabe 9.11Programmiere ein Spielbrett für Vier gewinnt als verschachtelte Liste mit 6 Zeilen und 7 Spalten. Gib es zeilenweise aus und trage zwei Spielsituationen ein, bei denen jeweils eine Person gewinnt.
Zusatzaufgabe 9.12Schreibe eine Funktion, die die grösste Zahl einer Liste zurückgibt, ohne
maxzu verwenden. Was soll deine Funktion bei einer leeren Liste tun?