Kursinhalt
Python Fortgeschrittene Konzepte
Python Fortgeschrittene Konzepte
Python-Iterables
Was sind Iterables?
In Python sind Iterables Objekte, die durchlaufen oder über die iteriert werden kann, wobei ihre Elemente nacheinander zurückgegeben werden. Diese Fähigkeit, ein Element nach dem anderen zu produzieren, macht sie bei Aufgaben wie Schleifen, Comprehension und Entpacken unverzichtbar.
Einige gängige Iterables sind:
- Datenstrukturen: Listen, Tupel, Wörterbücher, Mengen;
- Strings: geben ihre Zeichen nacheinander aus;
- Benutzerdefinierte Objekte: durch Implementierung der
__iter__
-Methode iterierbar gemacht.
Ein wesentliches Merkmal von Iterables ist, dass sie sich während des Durchlaufs nicht von selbst "merken", wo sie sich befinden. Um ihre Elemente tatsächlich zu durchlaufen, benötigen sie einen Iterator.
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
Die for
-Schleife durchläuft automatisch die Elemente des Iterables und verarbeitet sie nacheinander.
Wenn Python ein Iterable verarbeitet, wandelt es das Objekt mit der iter()
-Funktion in einen Iterator um. Intern ruft iter()
die __iter__()
-Methode des Objekts auf. Ebenso ruft die next()
-Funktion den nächsten Wert vom Iterator ab, indem sie dessen __next__()
-Methode aufruft.
Hier ist ein Beispiel, das zeigt, wie das funktioniert:
numbers = [1, 2, 3, 4] # Converting the list to an iterator numbers_iterator = iter(numbers) # Accessing elements one at a time using `next()` print(next(numbers_iterator)) # Output: 1 print(next(numbers_iterator)) # Output: 2 print(next(numbers_iterator)) # Output: 3 print(next(numbers_iterator)) # Output: 4 print(next(numbers_iterator)) # Output: StopIteration
Iterables vs. Iterators
Während alle Iteratoren iterierbar sind, sind nicht alle Iterables Iteratoren. Ein Iterator merkt sich seine Position während der Durchlaufens und bietet Zugriff auf die Elemente nacheinander, bis das Ende erreicht ist.
Einschränkungen von Iterables
Beim Arbeiten mit großen Datensätzen kann das Speichern aller Elemente in einem Iterable wie einer Liste ineffizient sein. Wenn zum Beispiel die Zahlenfolge dynamisch generiert wird oder zu groß ist, um in den Speicher zu passen, benötigen wir eine Möglichkeit, Elemente bei Bedarf zu verarbeiten. Hier werden Iteratoren (im nächsten Kapitel behandelt) und Lazy Evaluation (später eingeführt) entscheidend.
Swipe to start coding
Schreiben Sie ein Python-Skript, um das Würfeln eines gemischten sechsseitigen Würfels mithilfe von Iteratoren zu simulieren. Vervollständigen Sie die fehlenden Teile des Codes, um einen Iterator zu erstellen, Elemente mit next()
abzurufen und das Ende der Iteration elegant zu behandeln.
- Eine Liste
[1, 2, 3, 4, 5, 6]
repräsentiert die Seiten eines Würfels. Die Liste wurde bereits mitrandom.shuffle()
gemischt. - Konvertieren Sie die gemischte Liste in einen Iterator, damit Sie ihre Elemente nacheinander durchlaufen können.
- Verwenden Sie die Funktion
next()
, um das Würfeln des Würfels zu simulieren und jede Seite zu drucken, bis alle Seiten verwendet wurden. - Wenn der Iterator erschöpft ist, behandeln Sie die
StopIteration
-Ausnahme, um anzuzeigen, dass die Würfe abgeschlossen sind.
Lösung
Danke für Ihr Feedback!
Python-Iterables
Was sind Iterables?
In Python sind Iterables Objekte, die durchlaufen oder über die iteriert werden kann, wobei ihre Elemente nacheinander zurückgegeben werden. Diese Fähigkeit, ein Element nach dem anderen zu produzieren, macht sie bei Aufgaben wie Schleifen, Comprehension und Entpacken unverzichtbar.
Einige gängige Iterables sind:
- Datenstrukturen: Listen, Tupel, Wörterbücher, Mengen;
- Strings: geben ihre Zeichen nacheinander aus;
- Benutzerdefinierte Objekte: durch Implementierung der
__iter__
-Methode iterierbar gemacht.
Ein wesentliches Merkmal von Iterables ist, dass sie sich während des Durchlaufs nicht von selbst "merken", wo sie sich befinden. Um ihre Elemente tatsächlich zu durchlaufen, benötigen sie einen Iterator.
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
Die for
-Schleife durchläuft automatisch die Elemente des Iterables und verarbeitet sie nacheinander.
Wenn Python ein Iterable verarbeitet, wandelt es das Objekt mit der iter()
-Funktion in einen Iterator um. Intern ruft iter()
die __iter__()
-Methode des Objekts auf. Ebenso ruft die next()
-Funktion den nächsten Wert vom Iterator ab, indem sie dessen __next__()
-Methode aufruft.
Hier ist ein Beispiel, das zeigt, wie das funktioniert:
numbers = [1, 2, 3, 4] # Converting the list to an iterator numbers_iterator = iter(numbers) # Accessing elements one at a time using `next()` print(next(numbers_iterator)) # Output: 1 print(next(numbers_iterator)) # Output: 2 print(next(numbers_iterator)) # Output: 3 print(next(numbers_iterator)) # Output: 4 print(next(numbers_iterator)) # Output: StopIteration
Iterables vs. Iterators
Während alle Iteratoren iterierbar sind, sind nicht alle Iterables Iteratoren. Ein Iterator merkt sich seine Position während der Durchlaufens und bietet Zugriff auf die Elemente nacheinander, bis das Ende erreicht ist.
Einschränkungen von Iterables
Beim Arbeiten mit großen Datensätzen kann das Speichern aller Elemente in einem Iterable wie einer Liste ineffizient sein. Wenn zum Beispiel die Zahlenfolge dynamisch generiert wird oder zu groß ist, um in den Speicher zu passen, benötigen wir eine Möglichkeit, Elemente bei Bedarf zu verarbeiten. Hier werden Iteratoren (im nächsten Kapitel behandelt) und Lazy Evaluation (später eingeführt) entscheidend.
Swipe to start coding
Schreiben Sie ein Python-Skript, um das Würfeln eines gemischten sechsseitigen Würfels mithilfe von Iteratoren zu simulieren. Vervollständigen Sie die fehlenden Teile des Codes, um einen Iterator zu erstellen, Elemente mit next()
abzurufen und das Ende der Iteration elegant zu behandeln.
- Eine Liste
[1, 2, 3, 4, 5, 6]
repräsentiert die Seiten eines Würfels. Die Liste wurde bereits mitrandom.shuffle()
gemischt. - Konvertieren Sie die gemischte Liste in einen Iterator, damit Sie ihre Elemente nacheinander durchlaufen können.
- Verwenden Sie die Funktion
next()
, um das Würfeln des Würfels zu simulieren und jede Seite zu drucken, bis alle Seiten verwendet wurden. - Wenn der Iterator erschöpft ist, behandeln Sie die
StopIteration
-Ausnahme, um anzuzeigen, dass die Würfe abgeschlossen sind.
Lösung
Danke für Ihr Feedback!