Zum Inhalt springen
aviral gupta

// B1.4 · ca. 25 Min. · Einstieg

Listen: eine Folge speichern und ändern

Nach dieser Lektion speichern Sie mehrere Werte in einer Liste, lesen und ändern Einträge über ihre Position, hängen etwas an und erkennen, wann zwei Namen dieselbe Liste teilen.

Lektion 4 von 5 in B1 Erste Schritte

Danach können Sie

  • Listen schreiben und Einträge und Teile mit Indizes, Slices und len() lesen
  • Eine Liste direkt ändern: Einträge ersetzen, anhängen und an Slices zuweisen
  • Verschachtelte Listen nutzen und vorhersagen, was passiert, wenn zwei Namen auf dieselbe Liste verweisen
  1. Aufwärmen · Aufgabe 1 von 7

    Aufwärmen aus Lektion B1.3: Was gibt das aus?

    word = "Python"
    print(word[-3:])
  2. Vorhersagen · Aufgabe 2 von 7

    Sagen Sie es vorher, bevor Sie weiterlesen: Eine der Kubikzahlen ist falsch, und das Programm korrigiert sie. Was gibt es aus?

    cubes = [1, 8, 27, 65, 125]
    cubes[3] = 64
    print(cubes)
  3. Üben · Aufgabe 3 von 7

    Setzen Sie die Methode ein, die "c" am Ende der Liste anhängt.

    letters = ["a", "b"]
    letters.____("c")
    print(letters)
    letters.("c")
  4. Üben · Aufgabe 4 von 7

    Was gibt das aus?

    nums = [1, 2, 3, 4, 5]
    print(nums[1:3], nums[-1], len(nums))
  5. Üben · Aufgabe 5 von 7

    x = [["a", "b"], [1, 2, 3]]. Ordnen Sie jedem Ausdruck seinen Wert zu.

  6. Denksport · Aufgabe 6 von 7

    Knobelaufgabe. Nur b wird geändert. Was zeigt print(a)?

    a = [1, 2, 3]
    b = a
    b.append(4)
    print(a)
  7. Anwenden · Aufgabe 7 von 7

    Mini-Aufgabe. Beginnen Sie eine Einkaufsliste: items = ["milk", "bread"]. Hängen Sie "eggs" an und ersetzen Sie dann den ersten Eintrag durch "oat milk". Geben Sie die Liste aus und in einer zweiten Zeile Items: mit der Zahl der Einträge.

    Prüfen Sie Ihr Ergebnis anhand dieser Liste

Selbst programmieren

Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.

Ausgearbeitetes Beispiel

Eine Woche Temperaturen

Das Programm speichert die Tagestemperaturen einer Woche in einer Liste, Montag zuerst. Es liest einzelne Tage und das Wochenende mit Indizes und einem Slice, korrigiert einen Messwert, hängt den nächsten Tag an und legt dann zwei Wochen in eine verschachtelte Liste. Ändern Sie eine Temperatur und starten Sie erneut.

main.py

# Temperatures for one week, Monday first.
temps = [12, 14, 13, 17, 19, 21, 18]

print("Days:", len(temps))
print("Monday:", temps[0], "Sunday:", temps[-1])
print("Weekend:", temps[5:])

temps[3] = 16  # Thursday's reading was corrected
temps.append(15)  # next Monday
print("Corrected:", temps)

weeks = [temps[:7], [9, 11, 10, 12, 14, 15, 13]]
print("Week 2, Tuesday:", weeks[1][1])

Ausführen mit

python main.py

Ausgabe

Days: 7
Monday: 12 Sunday: 18
Weekend: [21, 18]
Corrected: [12, 14, 13, 16, 19, 21, 18, 15]
Week 2, Tuesday: 11
  • temps[5:] ist eine neue Liste mit den letzten zwei Tagen: Ein Slice einer Liste ist eine Liste.
  • temps[3] = 16 ändert die Liste direkt; die anderen Einträge bleiben, wo sie sind.
  • append() hat die Liste um eins verlängert: Sie hat jetzt 8 Einträge.
  • weeks[1][1]: erst die zweite Woche, dann der zweite Tag darin.
Ändern und ausführen

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Übungen

Übung 1 von 2

Erster, letzter und die Mitte

scores = [72, 95, 88, 61, 79] enthält Testergebnisse in der Reihenfolge, in der sie geschrieben wurden. Geben Sie drei Zeilen aus: First: 72 Last: 79 Middle: [95, 88, 61] Count: 5 Die Mitte sind alle Ergebnisse außer dem ersten und dem letzten. Die Prüfungen probieren auch andere Listen.

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Hinweise
  1. Hinweis 1

    scores[-1] ist der letzte Eintrag, egal wie lang die Liste ist.

  2. Hinweis 2

    scores[1:-1] beginnt beim zweiten Eintrag und endet vor dem letzten.

  3. Hinweis 3

    print("Count:", len(scores))

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

scores = [72, 95, 88, 61, 79]

print("First:", scores[0], "Last:", scores[-1])
print("Middle:", scores[1:-1])
print("Count:", len(scores))
Auf dem eigenen Computer ausführen

Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.

main.py

scores = [72, 95, 88, 61, 79]

# First: ... Last: ...
# Middle: ...
# Count: ...
print("First:", scores[0], "Last:", scores[4])

test_main.py

import re

from learnrun import run_main


def run_with(**values):
    with open("main.py", encoding="utf-8") as f:
        code = f.read()
    for name, value in values.items():
        code, count = re.subn(rf"^{name} = .*$", f"{name} = {value!r}", code, count=1, flags=re.M)
        assert count == 1, f"main.py braucht oben die Zeile {name} = ..."
    with open("variant.py", "w", encoding="utf-8") as f:
        f.write(code)
    return run_main(path="variant.py").strip()


def test_first_and_last():
    """Die erste Zeile zeigt das erste und das letzte Ergebnis"""
    got = run_with(scores=[72, 95, 88, 61, 79]).splitlines()[:1]
    assert got == ["First: 72 Last: 79"], f"die erste Zeile ist {got!r}, erwartet: ['First: 72 Last: 79']"


def test_middle_and_count():
    """Es folgen die mittleren Ergebnisse und die Anzahl"""
    got = run_with(scores=[72, 95, 88, 61, 79]).splitlines()[1:]
    assert got == ["Middle: [95, 88, 61]", "Count: 5"], f"Zeile 2 und 3 sind {got!r}"


def test_other_list():
    """Auch eine Liste mit drei Ergebnissen funktioniert"""
    got = run_with(scores=[50, 60, 70]).splitlines()
    assert got == ["First: 50 Last: 70", "Middle: [60]", "Count: 3"], f"bei [50, 60, 70] gab das Programm {got!r} aus"

Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.

Programm ausführen:

python main.py

Prüfungen ausführen (learnrun.py muss im selben Ordner liegen):

python learnrun.py test
learnrun.py herunterladen

Übung 2 von 2

Eine Playlist aktualisieren

songs = ["Intro", "Blue", "Green"] ist eine Playlist. Ändern Sie sie direkt: Hängen Sie "Outro" an und ersetzen Sie dann den zweiten Song durch "Red". Geben Sie die Liste aus, danach Songs: und die Zahl der Songs. Für die Startliste ergibt das: ['Intro', 'Red', 'Green', 'Outro'] Songs: 4

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Hinweise
  1. Hinweis 1

    songs.append("Outro") hängt den Song an dieselbe Liste an.

  2. Hinweis 2

    Der zweite Song hat den Index 1: songs[1] = "Red".

  3. Hinweis 3

    Ändern Sie zuerst die Liste und geben Sie sie danach aus, damit beide Änderungen zu sehen sind.

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

songs = ["Intro", "Blue", "Green"]

songs.append("Outro")
songs[1] = "Red"
print(songs)
print("Songs:", len(songs))
Auf dem eigenen Computer ausführen

Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.

main.py

songs = ["Intro", "Blue", "Green"]

# 1. Add "Outro" at the end.
# 2. Replace the second song with "Red".
print(songs)
print("Songs:", len(songs))

test_main.py

import re

from learnrun import run_main


def run_with(**values):
    with open("main.py", encoding="utf-8") as f:
        code = f.read()
    for name, value in values.items():
        code, count = re.subn(rf"^{name} = .*$", f"{name} = {value!r}", code, count=1, flags=re.M)
        assert count == 1, f"main.py braucht oben die Zeile {name} = ..."
    with open("variant.py", "w", encoding="utf-8") as f:
        f.write(code)
    return run_main(path="variant.py").strip()


def test_playlist():
    """Outro wird angehängt, und der zweite Song wird zu Red"""
    got = run_with(songs=["Intro", "Blue", "Green"]).splitlines()[:1]
    assert got == ["['Intro', 'Red', 'Green', 'Outro']"], f"die ausgegebene Liste ist {got!r}"


def test_count():
    """Die Anzahl zählt den neuen Song mit"""
    got = run_with(songs=["Intro", "Blue", "Green"]).splitlines()[1:]
    assert got == ["Songs: 4"], f"die zweite Zeile ist {got!r}, erwartet: ['Songs: 4']"


def test_other_playlist():
    """Auch eine Playlist mit zwei Songs funktioniert"""
    got = run_with(songs=["A", "B"]).splitlines()
    assert got == ["['A', 'Red', 'Outro']", "Songs: 3"], f"bei ['A', 'B'] gab das Programm {got!r} aus"

Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.

Programm ausführen:

python main.py

Prüfungen ausführen (learnrun.py muss im selben Ordner liegen):

python learnrun.py test
learnrun.py herunterladen

Häufige Fehler

Ein Index hinter dem Ende

items = ["a", "b"]
print(items[2])

Was Python ausgibt

IndexError: list index out of range

Warum, und die Lösung

Eine Liste mit zwei Einträgen hat die Indizes 0 und 1. Nehmen Sie items[-1] für den letzten Eintrag oder len(items) - 1 als seinen Index. Einen dritten Eintrag fügen Sie mit append() hinzu; eine Zuweisung an items[2] führt zum selben Fehler.

Eine Methode aus einer anderen Sprache

items = ["a"]
items.push("b")

Was Python ausgibt

AttributeError: 'list' object has no attribute 'push'

Warum, und die Lösung

Python-Listen haben keine Methode push. Die Methode, die am Ende anhängt, heißt append: items.append("b").

Das Ergebnis von append() speichern

items = ["a", "b"]
items = items.append("c")
print(items[0])

Was Python ausgibt

TypeError: 'NoneType' object is not subscriptable

Warum, und die Lösung

append() ändert die Liste selbst und liefert None. Weisen Sie dieses Ergebnis items zu, ist die Liste weg, und items[0] scheitert, weil None keine Einträge hat. Rufen Sie es in einer eigenen Zeile auf: items.append("c").

Python im Browser: Pyodide 314.0.7, MPL-2.0. Lizenz und Quellcode

Abschlussquiz

5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.

Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.

Problem melden

Etwas ist falsch oder unklar? Beschreiben Sie es kurz, dann wird es geprüft und korrigiert.

#

Mindestens 20 Zeichen.

Nur, wenn Sie eine Antwort wünschen.

Kernideen

Listen enthalten mehrere Werte

Eine Liste schreibt man als Werte in eckigen Klammern, durch Kommas getrennt: squares = [1, 4, 9, 16, 25]. Die Einträge dürfen verschiedene Typen haben, meist haben aber alle denselben. Listen werden genau wie Strings indiziert und geschnitten: squares[0] ist 1, squares[-1] ist 25 und squares[1:3] ist [4, 9]. len(squares) liefert die Zahl der Einträge, und + verbindet zwei Listen zu einer neuen. Ein Slice ist immer eine neue Liste.

Listen lassen sich ändern

Anders als Strings sind Listen veränderlich. squares[2] = 10 ersetzt einen Eintrag, squares.append(36) hängt einen am Ende an. Sie können auch an einen Slice zuweisen und damit die Länge ändern: letters[1:3] = ["X"] ersetzt zwei Einträge durch einen, letters[1:3] = [] entfernt sie, und letters[:] = [] leert die ganze Liste. append() ändert die Liste und liefert None; schreiben Sie also items.append(x), nie items = items.append(x).

Verschachtelte Listen und eine Liste mit zwei Namen

Eine Liste kann andere Listen enthalten: grid = [[1, 2], [3, 4]]. grid[1] ist die innere Liste [3, 4], und grid[1][0] ist deren erster Eintrag, 3. Eine Zuweisung kopiert nie: Nach b = a verweisen beide Namen auf dieselbe Liste, und b.append(4) ist auch über a zu sehen. Brauchen Sie eine unabhängige Kopie, nehmen Sie einen Slice der ganzen Liste: b = a[:].

Quellen

Zuletzt geprüft am 29. September 2026