Kursinhalt
Python Fortgeschrittene Konzepte
Python Fortgeschrittene Konzepte
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:
- Das Schlüsselwort
yield
anstelle vonreturn
verwendet; - Die Ausführung pausiert und ihren Zustand beibehält, wenn yield aufgerufen wird;
- Die Ausführung dort fortsetzt, wo sie aufgehört hat, wenn der Generator erneut aufgerufen wird.
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
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}")
Unterschiede zwischen Iterator und Generator
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.
- Definieren Sie die Generatorfunktion. Verwenden Sie das yield-Schlüsselwort innerhalb der
dice_roller
-Funktion, um zufällige Würfelwürfe zwischen1
und6
zu erzeugen. Verwenden Sie die Funktionrandom.randint()
, um jeden Wurf zu simulieren. - Rufen Sie die Funktion
dice_roller()
auf, um ein Generatorobjekt zu erstellen, und weisen Sie es der Variablendice_generator
zu. - Verwenden Sie eine
for
-Schleife mitenumerate()
, um über den Generator zu iterieren. Beenden Sie die Iteration nach10
Würfen mit einerif
-Bedingung und derbreak
-Anweisung.
Lösung
Danke für Ihr Feedback!
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:
- Das Schlüsselwort
yield
anstelle vonreturn
verwendet; - Die Ausführung pausiert und ihren Zustand beibehält, wenn yield aufgerufen wird;
- Die Ausführung dort fortsetzt, wo sie aufgehört hat, wenn der Generator erneut aufgerufen wird.
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
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}")
Unterschiede zwischen Iterator und Generator
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.
- Definieren Sie die Generatorfunktion. Verwenden Sie das yield-Schlüsselwort innerhalb der
dice_roller
-Funktion, um zufällige Würfelwürfe zwischen1
und6
zu erzeugen. Verwenden Sie die Funktionrandom.randint()
, um jeden Wurf zu simulieren. - Rufen Sie die Funktion
dice_roller()
auf, um ein Generatorobjekt zu erstellen, und weisen Sie es der Variablendice_generator
zu. - Verwenden Sie eine
for
-Schleife mitenumerate()
, um über den Generator zu iterieren. Beenden Sie die Iteration nach10
Würfen mit einerif
-Bedingung und derbreak
-Anweisung.
Lösung
Danke für Ihr Feedback!