Comprehensions & Generatoren
Comprehensions bauen Listen, Sets und Dictionaries in einem lesbaren Ausdruck. Für komplexe Logik bleibt die Schleife oft die klarere Wahl.
Ansicht
01
Verstehen
Lies die Kernidee und das Beispiel.
02
Prüfen
Beantworte die Aktiv-Checks.
03
Anwenden
Setze die Transferaufgabe um.
Lerninhalt
Verstehen & anwenden
List Comprehensions
Die Form [ausdruck for wert in sammlung] erzeugt eine neue Liste.
Ein if am Ende filtert die Werte.
Comprehensions sind kurz, aber nicht automatisch besser. Wenn mehrere Bedingungen und Seiteneffekte zusammenkommen, ist eine Schleife lesbarer.
zahlen = [1, 2, 3, 4, 5]
quadrate = [zahl ** 2 for zahl in zahlen]
gerade = [zahl for zahl in zahlen if zahl % 2 == 0]
print(quadrate) # [1, 4, 9, 16, 25]
print(gerade) # [2, 4]Dict und Set Comprehensions
Bei Dictionaries stehen Schlüssel und Wert vor dem for: {name: len(name) for name in namen}.
Set Comprehensions nutzen geschweifte Klammern ohne Doppelpunkt. Duplikate werden automatisch entfernt.
namen = ["Ada", "Bob"]
laengen = {name: len(name) for name in namen}
print(laengen) # {"Ada": 3, "Bob": 3}
buchstaben = {buchstabe for buchstabe in "banane"}
print(buchstaben) # {"b", "a", "n", "e"}Generatorausdrücke
Ein Generator steht in runden Klammern und erzeugt Werte erst bei Bedarf.
Das spart Speicher bei großen Datenmengen.
next() holt den nächsten Wert. sum() und viele andere Funktionen akzeptieren Generatoren direkt.
zahlen = (zahl ** 2 for zahl in range(1_000_000))
print(next(zahlen)) # 0
print(next(zahlen)) # 1
print(sum(zahl for zahl in range(10))) # 45Aktiv-Check
Teste dein Verständnis
Erkennen: Welcher Abschnitt passt?
Welcher Abschnitt passt zu diesen Begriffen?
Transfer
Mini-Projekt: Haushaltsbuch
Baue ein kleines Haushaltsbuch, das Ausgaben als Dictionaries speichert, Summen berechnet und die Einträge in einer Datei sichert.
Selbstcheck
Kann ich das schon?
Hake ab, was du wirklich erklären oder selbst bauen könntest.
Fortschritt
Bereit zum Abschließen?
Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.