Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Python-Iterables | Iteratoren und Generatoren
Python Fortgeschrittene Konzepte
course content

Kursinhalt

Python Fortgeschrittene Konzepte

Python Fortgeschrittene Konzepte

1. Module und Importe
2. Fehlerbehandlung
3. Dateiverwaltung
4. Pytest Framework
5. Unittest-Framework
6. Iteratoren und Generatoren

book
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.

1234567
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
copy

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:

12345678910
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
copy

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.

Aufgabe

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.

  1. Eine Liste [1, 2, 3, 4, 5, 6] repräsentiert die Seiten eines Würfels. Die Liste wurde bereits mit random.shuffle() gemischt.
  2. Konvertieren Sie die gemischte Liste in einen Iterator, damit Sie ihre Elemente nacheinander durchlaufen können.
  3. Verwenden Sie die Funktion next(), um das Würfeln des Würfels zu simulieren und jede Seite zu drucken, bis alle Seiten verwendet wurden.
  4. Wenn der Iterator erschöpft ist, behandeln Sie die StopIteration-Ausnahme, um anzuzeigen, dass die Würfe abgeschlossen sind.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 6. Kapitel 1
toggle bottom row

book
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.

1234567
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
copy

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:

12345678910
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
copy

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.

Aufgabe

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.

  1. Eine Liste [1, 2, 3, 4, 5, 6] repräsentiert die Seiten eines Würfels. Die Liste wurde bereits mit random.shuffle() gemischt.
  2. Konvertieren Sie die gemischte Liste in einen Iterator, damit Sie ihre Elemente nacheinander durchlaufen können.
  3. Verwenden Sie die Funktion next(), um das Würfeln des Würfels zu simulieren und jede Seite zu drucken, bis alle Seiten verwendet wurden.
  4. Wenn der Iterator erschöpft ist, behandeln Sie die StopIteration-Ausnahme, um anzuzeigen, dass die Würfe abgeschlossen sind.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 6. Kapitel 1
Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
We're sorry to hear that something went wrong. What happened?
some-alt