Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Einführung in Generatoren | 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
Einführung in Generatoren

Generatoren vereinfachen die verzögerte Auswertung, indem sie eine prägnante und lesbare Möglichkeit bieten, Iteratoren zu erstellen. Während ein Iterator als Klasse mit den Methoden __iter__() und __next__() implementiert wird, wird ein Generator als Funktion implementiert, die das Schlüsselwort yield verwendet, um Werte nacheinander zu erzeugen. Generatoren behalten ihren Zustand automatisch zwischen den Aufrufen bei, was sie für viele Anwendungsfälle intuitiver und effizienter macht.

Ein Generator ist eine spezielle Art von Funktion, die:

  1. Das Schlüsselwort yield anstelle von return verwendet;
  2. Die Ausführung pausiert und ihren Zustand beibehält, wenn yield aufgerufen wird;
  3. Die Ausführung dort fortsetzt, wo sie aufgehört hat, wenn der Generator erneut aufgerufen wird.
123456789
def example_generator(): yield "First value" yield "Second value" yield "Third value" gen = example_generator() print(next(gen)) # Output: First value print(next(gen)) # Output: Second value print(next(gen)) # Output: Third value
copy
12345678910
import random def limited_dice_roller(num_rolls): for _ in range(num_rolls): yield random.randint(1, 6) # Using the limited dice roller print("Rolling the dice:") for roll in limited_dice_roller(5): print(f"Rolled: {roll}")
copy

Unterschiede zwischen Iterator und Generator

Aufgabe

Swipe to start coding

In der vorherigen Aufgabe haben Sie einen unendlichen Würfelroller mit einer benutzerdefinierten Iterator-Klasse implementiert. Jetzt werden Sie die gleiche Funktionalität vereinfachen, indem Sie eine Generatorfunktion verwenden. Generatoren bieten eine prägnante und lesbare Möglichkeit, Werte verzögert mit dem yield-Schlüsselwort zu erzeugen.

  1. Definieren Sie die Generatorfunktion. Verwenden Sie das yield-Schlüsselwort innerhalb der dice_roller-Funktion, um zufällige Würfelwürfe zwischen 1 und 6 zu erzeugen. Verwenden Sie die Funktion random.randint(), um jeden Wurf zu simulieren.
  2. Rufen Sie die Funktion dice_roller() auf, um ein Generatorobjekt zu erstellen, und weisen Sie es der Variablen dice_generator zu.
  3. Verwenden Sie eine for-Schleife mit enumerate(), um über den Generator zu iterieren. Beenden Sie die Iteration nach 10 Würfen mit einer if-Bedingung und der break-Anweisung.

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 4
toggle bottom row

book
Einführung in Generatoren

Generatoren vereinfachen die verzögerte Auswertung, indem sie eine prägnante und lesbare Möglichkeit bieten, Iteratoren zu erstellen. Während ein Iterator als Klasse mit den Methoden __iter__() und __next__() implementiert wird, wird ein Generator als Funktion implementiert, die das Schlüsselwort yield verwendet, um Werte nacheinander zu erzeugen. Generatoren behalten ihren Zustand automatisch zwischen den Aufrufen bei, was sie für viele Anwendungsfälle intuitiver und effizienter macht.

Ein Generator ist eine spezielle Art von Funktion, die:

  1. Das Schlüsselwort yield anstelle von return verwendet;
  2. Die Ausführung pausiert und ihren Zustand beibehält, wenn yield aufgerufen wird;
  3. Die Ausführung dort fortsetzt, wo sie aufgehört hat, wenn der Generator erneut aufgerufen wird.
123456789
def example_generator(): yield "First value" yield "Second value" yield "Third value" gen = example_generator() print(next(gen)) # Output: First value print(next(gen)) # Output: Second value print(next(gen)) # Output: Third value
copy
12345678910
import random def limited_dice_roller(num_rolls): for _ in range(num_rolls): yield random.randint(1, 6) # Using the limited dice roller print("Rolling the dice:") for roll in limited_dice_roller(5): print(f"Rolled: {roll}")
copy

Unterschiede zwischen Iterator und Generator

Aufgabe

Swipe to start coding

In der vorherigen Aufgabe haben Sie einen unendlichen Würfelroller mit einer benutzerdefinierten Iterator-Klasse implementiert. Jetzt werden Sie die gleiche Funktionalität vereinfachen, indem Sie eine Generatorfunktion verwenden. Generatoren bieten eine prägnante und lesbare Möglichkeit, Werte verzögert mit dem yield-Schlüsselwort zu erzeugen.

  1. Definieren Sie die Generatorfunktion. Verwenden Sie das yield-Schlüsselwort innerhalb der dice_roller-Funktion, um zufällige Würfelwürfe zwischen 1 und 6 zu erzeugen. Verwenden Sie die Funktion random.randint(), um jeden Wurf zu simulieren.
  2. Rufen Sie die Funktion dice_roller() auf, um ein Generatorobjekt zu erstellen, und weisen Sie es der Variablen dice_generator zu.
  3. Verwenden Sie eine for-Schleife mit enumerate(), um über den Generator zu iterieren. Beenden Sie die Iteration nach 10 Würfen mit einer if-Bedingung und der break-Anweisung.

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 4
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