Ersetze deine aufbauenden Schleifen durch ausdrucksstarke Comprehensions, um deine Daten zu transformieren, zu filtern und neu zu indizieren.
Diese Lektion in Kodokon öffnenEine List-Comprehension verdichtet das häufigste Muster in der Programmierung: eine Liste aufzubauen, indem man eine Sequenz transformiert oder filtert. Die Syntax liest sich wie ein Satz: [expression for element in sequence if condition]. Gleiches Ergebnis wie eine Schleife mit append, in einer einzigen deklarativen Zeile, die jeder Python-Entwickler sofort erkennt.
prices = [12.0, 49.9, 5.5, 199.0]
with_tax = [round(p * 1.2, 2) for p in prices]
cheap = [p for p in prices if p < 50]
print(with_tax) # [14.4, 59.88, 6.6, 238.8]
print(cheap) # [12.0, 49.9, 5.5]Die Dictionary-Comprehension folgt derselben Logik mit der Syntax {key: value for ...}. Ein sehr verbreiteter Anwendungsfall in Projekten: eine Liste von Objekten nach ihrem Bezeichner neu zu indizieren, um dann sofortige Zugriffe zu bekommen, statt die Liste jedes Mal zu durchsuchen, wenn man etwas braucht.
users = [
{"id": 7, "name": "Alice"},
{"id": 12, "name": "Bruno"},
{"id": 31, "name": "Chloe"},
]
by_id = {u["id"]: u["name"] for u in users}
print(by_id[12]) # Bruno
print(31 in by_id) # TrueZwei Positionen für if, zwei verschiedene Rollen. Nach dem for platziert, filtert es: Abgelehnte Elemente erscheinen nicht im Ergebnis. Vor dem for platziert, als bedingter Ausdruck (a if condition else b), wählt es einen Wert für jedes Element: Die Liste behält dann dieselbe Länge wie die Quelle.
scores = [45, 82, 67, 91]
labels = ["pass" if s >= 60 else "fail" for s in scores]
print(labels) # ['fail', 'pass', 'pass', 'pass']