Comprehensions

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!