Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Introduktion til Generatorer: Effektiv Iteration med Yield | Mestring af Iteratorer og Generatorer i Python
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Python Strukturel Programmering

bookIntroduktion til Generatorer: Effektiv Iteration med Yield

Generatorer forenkler lazy evaluation ved at tilbyde en kortfattet og læsbar måde at oprette iteratorer på. Hvor en iterator implementeres som en klasse med metoderne __iter__() og __next__(), implementeres en generator som en funktion, der bruger nøgleordet yield til at returnere værdier én ad gangen. Generatorer bevarer automatisk deres tilstand mellem kald, hvilket gør dem mere intuitive og effektive til mange anvendelser.

En generator er en særlig type funktion, der:

  1. Bruger nøgleordet yield i stedet for return;
  2. Pauser eksekveringen og bevarer sin tilstand, når yield kaldes;
  3. Genoptager eksekveringen fra det sted, hvor den slap, når generatoren kaldes igen.
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

Forskelle mellem iterator og generator

Opgave

Swipe to start coding

I den forrige opgave implementerede du en uendelig terningekaster ved hjælp af en brugerdefineret iterator-klasse. Nu skal du forenkle den samme funktionalitet ved at bruge en generatorfunktion. Generatorer giver en kortfattet og læsbar måde at producere værdier på efter behov ved hjælp af yield-nøgleordet.

  1. Definér generatorfunktionen. Brug nøgleordet yield inde i funktionen dice_roller til at generere tilfældige terningekast mellem 1 og 6. Brug funktionen random.randint() til at simulere hvert kast.
  2. Kald funktionen dice_roller() for at oprette et generatorobjekt og tildel det til variablen dice_generator.
  3. Brug en for-løkke med enumerate() til at iterere over generatoren. Stop iterationen efter 10 kast ved hjælp af en if-betingelse og break-udsagnet.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 6. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

close

bookIntroduktion til Generatorer: Effektiv Iteration med Yield

Stryg for at vise menuen

Generatorer forenkler lazy evaluation ved at tilbyde en kortfattet og læsbar måde at oprette iteratorer på. Hvor en iterator implementeres som en klasse med metoderne __iter__() og __next__(), implementeres en generator som en funktion, der bruger nøgleordet yield til at returnere værdier én ad gangen. Generatorer bevarer automatisk deres tilstand mellem kald, hvilket gør dem mere intuitive og effektive til mange anvendelser.

En generator er en særlig type funktion, der:

  1. Bruger nøgleordet yield i stedet for return;
  2. Pauser eksekveringen og bevarer sin tilstand, når yield kaldes;
  3. Genoptager eksekveringen fra det sted, hvor den slap, når generatoren kaldes igen.
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

Forskelle mellem iterator og generator

Opgave

Swipe to start coding

I den forrige opgave implementerede du en uendelig terningekaster ved hjælp af en brugerdefineret iterator-klasse. Nu skal du forenkle den samme funktionalitet ved at bruge en generatorfunktion. Generatorer giver en kortfattet og læsbar måde at producere værdier på efter behov ved hjælp af yield-nøgleordet.

  1. Definér generatorfunktionen. Brug nøgleordet yield inde i funktionen dice_roller til at generere tilfældige terningekast mellem 1 og 6. Brug funktionen random.randint() til at simulere hvert kast.
  2. Kald funktionen dice_roller() for at oprette et generatorobjekt og tildel det til variablen dice_generator.
  3. Brug en for-løkke med enumerate() til at iterere over generatoren. Stop iterationen efter 10 kast ved hjælp af en if-betingelse og break-udsagnet.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 6. Kapitel 4
single

single

some-alt