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-Iteratoren
Fortgeschrittene Python-Techniken

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 können Daten schrittweise verarbeitet werden, 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, wie etwa das Filtern von Elementen und anschließendes Transformieren oder das Kombinieren von Daten aus verschiedenen Quellen. Das obige Video veranschaulicht, wie Generator-Pipelines verwendet werden können, um den Code modular und speichereffizient zu halten, ohne dass Zwischenlisten erstellt werden müssen.

Ein Beispiel: Angenommen, es liegt eine Zahlenfolge vor und es sollen die geraden Zahlen herausgefiltert und anschließend die verbleibenden Zahlen quadriert werden. Dies lässt sich durch das Verketten zweier Generatorfunktionen erreichen: eine zum Filtern und eine zum Transformieren. So wird sichergestellt, dass jedes Element nur bei Bedarf verarbeitet wird, 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]

Die erste Funktion, filter_odds, nimmt ein iterierbares Zahlenobjekt entgegen und gibt nur die ungeraden Zahlen zurück. Die zweite Funktion, square_numbers, nimmt ein iterierbares Objekt 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.

Diese Methode ist speichereffizient, da jeder Wert einzeln verarbeitet wird, anstatt Zwischenlisten zu erstellen. Zudem bleibt der Code modular, da jede Generatorfunktion eine einzelne 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