9.3. Comprehensions#
Oft möchten wir aus einer bestehenden Datenstruktur eine neue erzeugen:
Wir transformieren Werte, filtern Elemente heraus oder bauen eine neue Struktur auf.
Mit Comprehensions bietet Python dafür eine sehr kompakte Syntax.
**Aus Daten werden neue Daten **
Eine typische Schleifen-Form, die Sie vielleicht schon geschrieben haben, sieht so aus:
numbers = list(range(5))
result = []
for x in numbers:
result.append(x * x)
result
[0, 1, 4, 9, 16]
Was ist hier passiert? Wir haben eine neue Datenstruktur, eine Liste, erzeugt. Diese haben wir dann schrittweise befüllt.
Mit einer List-Comprehension können wir das als einen Ausdruck schreiben:
numbers = list(range(5))
[x * x for x in numbers]
[0, 1, 4, 9, 16]
Merke
Materialisierende Comprehensions eignen sich zur Transformation von Datenstrukturen, wenn Sie in einer Zeile klar ausdrücken können: „nimm jedes Element und mache etwas damit (eventuell unter einer bestimmten Voraussetzung)“. Wenn mehrere Schritte, Nebenwirkungen oder Debug-Ausgaben nötig sind, ist eine normale Schleife oft besser lesbar!
Expertentipp: Generator-Expressions (Werte erst bei Bedarf)
Eine Generator-Expression (z. B. (x*x for x in numbers)) erzeugt keine neue Datenstruktur,
sondern einen Datenstrom von Werten, der erst beim Iterieren berechnet wird.
Das spart nicht nur Speicher, sondern kann auch Arbeit vermeiden (z. B. wenn man früh abbrechen kann)
und ist praktisch für Pipelines: Datenquelle hier, Verarbeitung dort.