Kapitel 18 • Data Engineering Track

Funktionale Programmierung & Pythonic Code ⚡🔄

Schreibe eleganten, kompakten und hocheffizienten Python-Code mit Lambda, enumerate, zip, map, filter, custom sort und Kontrollfunktionen.

📂 Dateien dieser Einheit:
💻 In Web-IDE öffnen → 📄 aufgabe.py (Startercode) 🧪 test_aufgabe.py (Tests) 💡 musterloesung.py (Lösung) 📖 README.md

1. Warum funktionale Idiome in Python?

In Python gibt es oft zwei Wege, eine Aufgabe zu lösen: Den langen, imperativen Weg mit vielen Hilfsvariablen und verschachtelten Schleifen – oder den eleganten, funktionalen Weg (Pythonic Code).

🏭 Die automatisierte Fließband-Analogie:

Stelle dir eine moderne Fertigungsstraße vor:

  • enumerate() (Die Etikettierstation): Klebt an jedes Teil automatisch die aktuelle Positionsnummer.
  • zip() (Die Fügestation): Bringt Bauteile von zwei parallelen Fließbändern paarweise zusammen.
  • filter() (Die Qualitätsweiche): Lässt nur Bauteile passieren, die ein Prüfkriterium erfüllen.
  • map() (Die Veredelungsstation): Wendet eine Transformation auf jedes durchlaufende Teil an.
  • all() / any() (Die Sensorüberwachung): Meldet sofort, ob alle Teile fehlerfrei sind oder mindestens ein Alarm anliegt.

2. Cheat-Sheet: Funktionale Idiome auf einen Blick

Funktion / Idiom Zweck Typisches Code-Beispiel Ergebnis
enumerate(l, start) Iteriert gleichzeitig über Index und Element. [f"{i}. {x}" for i, x in enumerate(["A","B"], 1)] ['1. A', '2. B']
zip(a, b) Verknüpft mehrere Sequenzen paarweise. dict(zip(["Name", "Alter"], ["Max", 25])) {'Name': 'Max', 'Alter': 25}
lambda x: ... Anonyme Mini-Funktion als Einzeiler. verdoppeln = lambda x: x * 2 verdoppeln(5) → 10
map(f, iter) Wendet Funktion f auf alle Elemente an. list(map(lambda x: x**2, [1, 2, 3])) [1, 4, 9]
filter(p, iter) Filtert Elemente nach Prädikat p. list(filter(lambda x: x > 0, [-2, 0, 5])) [5]
sorted(..., key=...) Sortiert nach beliebigem Schlüssel (Lambda). sorted(user, key=lambda u: u["alter"]) Sortierte Liste
all(iter) Gibt True, wenn ALLE Elemente wahr sind. all(x >= 18 for x in [20, 25, 18]) True
any(iter) Gibt True, wenn MINDESTENS EIN Element wahr ist. any(x == 0 for x in [1, 2, 0, 4]) True

3. 📋 Deine Aufgaben-Checkliste

Öffne die Datei aufgabe.py und löse die 6 Kern-Aufgaben:

💡 Lösungshinweise (Aufklappen bei Bedarf)

🔍 Tipp zu TODO 3: Map & Filter verketten

Du kannst filter() direkt in map() schachteln und mit list() materialisieren:

return list(map(lambda x: x ** 2, filter(lambda x: x % 2 != 0, zahlen)))
🔍 Tipp zu TODO 4: Sortieren mit Lambda-Key

Nutze den key-Parameter von sorted():

return sorted(personen, key=lambda p: p["alter"], reverse=absteigend)

4. 🧪 Lösung überprüfen & Testen

1. Automatische Tests ausführen:

Terminal (im Ordner 18_funktionale_programmierung_lambda)
python3 test_aufgabe.py

2. Interaktives Skript starten:

Terminal
python3 aufgabe.py

🧠 Diagnostischer Selbst-Check

Überprüfe dein Verständnis der Kernkonzepte und typischen Denkfallen, bevor du den Code in der Web-IDE schreibst.