Lektion 21 von 35Python
Python · Lektion 21 · 25 Minuten
List Comprehensions
Das lernst du
- Listen in einer einzigen Zeile erzeugen
- Mit
ifin einer Comprehension filtern - Dictionary-Comprehensions schreiben
Eine Liste in einer Zeile
Du kennst schon diesen Weg, eine Liste zu füllen:
quadrate = []
for x in range(1, 6):
quadrate.append(x * x)
print(quadrate)Eine List Comprehension macht dasselbe in einer Zeile:
quadrate = [x * x for x in range(1, 6)]
print(quadrate)Lies sie so: „Nimm x mal x für jedes x in range(1, 6).“
Filtern mit if
Hinten kannst du eine Bedingung anhängen. Nur Elemente, für die sie wahr ist, kommen in die neue Liste:
noten = [1, 4, 2, 5, 3, 2, 6]
gute = [n for n in noten if n <= 2]
print(gute)
namen = ["mia", "ben", "lea"]
print([n.upper() for n in namen if n != "ben"])Dictionaries und Mengen
Mit geschweiften Klammern funktioniert es auch für Dictionaries:
preise = {"Apfel": 0.5, "Brot": 2.0, "Käse": 3.5}
mit_rabatt = {ware: round(preis * 0.9, 2) for ware, preis in preise.items()}
print(mit_rabatt)
buchstaben = {b for b in "programmieren"}
print(sorted(buchstaben))Merke: Comprehensions sind super für kurze Umwandlungen. Wird sie so lang, dass man sie kaum noch lesen kann, ist eine normale
for-Schleife besser.
Kurz-Check
Bevor es an die Aufgabe geht: Was gibt dieses Programm aus? Tipp deine Vermutung ein – Python rechnet danach nach.
woerter = ["a", "bc", "def"]
print([w.upper() for w in woerter if len(w) > 1])Deine Aufgabe
Jetzt bist du dran
Erzeuge mit je einer Comprehension: die Liste quadrate mit den Quadratzahlen von 1 bis 10, die Liste gerade mit allen geraden Zahlen aus zahlen und das Dictionary laengen, das jedem Wort aus woerter seine Länge zuordnet.
zahlen = [3, 8, 15, 22, 7, 40]
woerter = ["Robo", "Python", "Code"]
quadrate = []
gerade = []
laengen = {}
print(quadrate)
print(gerade)
print(laengen)- Denkanstoß
[x
**2forx inrange(1, 11)] –rangeendet vor der 11. - Welcher Befehl hilft?
Filtere mit
ifz%2==0 am Ende der Comprehension.Dictionary-Comprehension: {w:
len(w)forw in woerter} - Lückencode – ergänze die ___
zahlen = [3, 8, 15, 22, 7, 40] woerter = ["Robo", "Python", "Code"] quadrate = ___ gerade = ___ laengen = ___ print(quadrate) print(gerade) print(laengen)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:
zahlen = [3, 8, 15, 22, 7, 40]
woerter = ["Robo", "Python", "Code"]
quadrate = [x ** 2 for x in range(1, 11)]
gerade = [z for z in zahlen if z % 2 == 0]
laengen = {w: len(w) for w in woerter}
print(quadrate)
print(gerade)
print(laengen)