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 zu
  • len() 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.1

Sage 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.2

Was erzeugen diese beiden Zeilen? Sage es zuerst voraus.

PythonLoading editor…
telefon = [9, 6, 7] + [1] * 4
leer = [0] * 20
Aufgabe 9.3

Schreibe die Funktion middle(L), die das mittlere Element einer Liste zurückgibt. Die Liste hat immer eine ungerade Länge.

PythonLoading editor…
Aufgabe 9.4

Schreibe die Funktion natuerliche_zahlen(n), die eine Liste mit den Zahlen von 1 bis n zurückgibt.

PythonLoading editor…
Aufgabe 9.5

Schreibe die Funktion prod(L), die das Produkt aller Elemente einer Liste berechnet.

PythonLoading editor…
Aufgabe 9.6

Schreibe die Funktion durchschnitt(L), die den Mittelwert einer Zahlenliste berechnet.

PythonLoading editor…
Aufgabe 9.7

Entferne alle doppelten Werte aus einer Liste, ohne fertige Hilfsmittel zu verwenden.

PythonLoading editor…
Aufgabe 9.8

Erzeuge eine Liste mit den Zahlen 1 bis 20 und übernimm daraus nur die Vielfachen von 3 in eine zweite Liste.

PythonLoading editor…

Weitere Aufgaben

Zusatzaufgabe 9.9

Frage fünf Wörter ab, speichere sie in einer Liste und gib sie in umgekehrter Reihenfolge aus.

PythonLoading editor…
Zusatzaufgabe 9.10

Für welchen Wert von x läuft mystery(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.11

Programmiere 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.

PythonLoading editor…
Zusatzaufgabe 9.12

Schreibe eine Funktion, die die grösste Zahl einer Liste zurückgibt, ohne max zu verwenden. Was soll deine Funktion bei einer leeren Liste tun?

PythonLoading editor…