Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verkettung und Zusammensetzung von Iteratoren | Python Iterators
Funktionale Programmierkonzepte in Python

bookVerkettung und Zusammensetzung von Iteratoren

Swipe um das Menü anzuzeigen

Das Verketten und Komponieren von Iteratoren ermöglicht den Aufbau leistungsfähiger Datenpipelines in Python. Durch das Verknüpfen einfacher Iterator- oder Generatorfunktionen kann die Datenverarbeitung schrittweise erfolgen, wobei jede Stufe die Daten transformiert oder filtert, bevor sie an die nächste weitergegeben werden. Dieser Ansatz ist besonders nützlich, wenn mehrere Operationen nacheinander angewendet werden sollen, etwa das Filtern von Elementen und anschließendes Transformieren oder das Kombinieren von Daten aus verschiedenen Quellen. Das oben gezeigte Video veranschaulicht, wie Generator-Pipelines dazu beitragen, den Code modular und speichereffizient zu halten, ohne dass Zwischenergebnisse als Listen erstellt werden müssen.

Ein Beispiel: Angenommen, es liegt eine Zahlenfolge vor, aus der zunächst die geraden Zahlen entfernt und anschließend die verbleibenden Zahlen quadriert werden sollen. Dies lässt sich durch das Verketten zweier Generatorfunktionen erreichen: einer zum Filtern und einer zum Transformieren. So wird jedes Element nur bei Bedarf verarbeitet, was den Code sowohl prägnant als auch effizient macht.

12345678910111213141516171819
def filter_odds(numbers): for n in numbers: if n % 2 != 0: yield n def square_numbers(numbers): for n in numbers: yield n ** 2 # Original data data = range(10) # Chain the generators: first filter, then transform filtered = filter_odds(data) squared = square_numbers(filtered) # Collect results result = list(squared) print(result) # Output: [1, 9, 25, 49, 81]
copy

Die erste Funktion, filter_odds, nimmt ein iterierbares Objekt mit Zahlen entgegen und gibt nur die ungeraden Zahlen zurück. Die zweite Funktion, square_numbers, nimmt ein iterierbares Objekt entgegen und gibt das Quadrat jeder Zahl zurück. Durch das direkte Übergeben der Ausgabe von filter_odds an square_numbers entsteht eine Pipeline: Zuerst werden die Daten gefiltert, dann transformiert. Das Endergebnis wird in eine Liste gesammelt und ausgegeben, wobei die Quadrate aller ungeraden Zahlen von 0 bis 9 angezeigt werden.

Dieses Verfahren ist speichereffizient, da jede Zahl einzeln verarbeitet wird und keine Zwischenergebnisse als Listen entstehen. Zudem bleibt der Code modular, da jede Generatorfunktion eine klar abgegrenzte Aufgabe übernimmt und in verschiedenen Pipelines wiederverwendet werden kann.

question mark

Welcher der folgenden Punkte ist ein Vorteil des Verketten von Iteratoren und Generatoren in Python?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 5. Kapitel 6
some-alt