Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Einführung in Generatoren: Werte für Effiziente Iteration Bereitstellen | Iteratoren und Generatoren
Python Fortgeschrittene Konzepte

bookEinführung in Generatoren: Werte für Effiziente Iteration Bereitstellen

Generatoren vereinfachen die verzögerte Auswertung, indem sie eine prägnante und gut 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 einzeln zu erzeugen. Generatoren verwalten ihren Zustand automatisch zwischen den Aufrufen, 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 unterbrochen wurde, 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 endlosen Würfelroller mithilfe einer benutzerdefinierten Iterator-Klasse implementiert. Nun vereinfachen Sie die gleiche Funktionalität durch den Einsatz einer Generatorfunktion. Generatoren bieten eine prägnante und gut lesbare Möglichkeit, Werte mithilfe des yield-Schlüsselworts verzögert zu erzeugen.

  1. Definieren Sie die Generatorfunktion. Verwenden Sie das Schlüsselwort yield innerhalb der Funktion dice_roller, um zufällige Würfelergebnisse zwischen 1 und 6 zu erzeugen. Nutzen 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 dieses 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 mithilfe einer if-Bedingung und der break-Anweisung.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 6. Kapitel 4
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

close

bookEinführung in Generatoren: Werte für Effiziente Iteration Bereitstellen

Swipe um das Menü anzuzeigen

Generatoren vereinfachen die verzögerte Auswertung, indem sie eine prägnante und gut 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 einzeln zu erzeugen. Generatoren verwalten ihren Zustand automatisch zwischen den Aufrufen, 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 unterbrochen wurde, 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 endlosen Würfelroller mithilfe einer benutzerdefinierten Iterator-Klasse implementiert. Nun vereinfachen Sie die gleiche Funktionalität durch den Einsatz einer Generatorfunktion. Generatoren bieten eine prägnante und gut lesbare Möglichkeit, Werte mithilfe des yield-Schlüsselworts verzögert zu erzeugen.

  1. Definieren Sie die Generatorfunktion. Verwenden Sie das Schlüsselwort yield innerhalb der Funktion dice_roller, um zufällige Würfelergebnisse zwischen 1 und 6 zu erzeugen. Nutzen 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 dieses 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 mithilfe 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
single

single

some-alt