Verkettung 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.
12345678910111213141516171819def 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]
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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen