Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Introductie tot Generators: Waarden Genereren voor Efficiënte Iteratie | Beheersing van Iterators en Generators in Python
Python Structureel Programmeren

bookIntroductie tot Generators: Waarden Genereren voor Efficiënte Iteratie

Generators vereenvoudigen luie evaluatie door een beknopte en leesbare manier te bieden om iterators te maken. Waar een iterator wordt geïmplementeerd als een klasse met de methoden __iter__() en __next__(), wordt een generator geïmplementeerd als een functie die de yield-sleutelwoord gebruikt om waarden één voor één op te leveren. Generators behouden hun toestand automatisch tussen aanroepen, waardoor ze intuïtiever en efficiënter zijn voor veel toepassingen.

Een generator is een speciaal type functie die:

  1. Het yield-sleutelwoord gebruikt in plaats van return;
  2. De uitvoering pauzeert en zijn toestand behoudt wanneer yield wordt aangeroepen;
  3. De uitvoering hervat vanaf het punt waar deze was gestopt wanneer de generator opnieuw wordt aangeroepen.
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

Verschillen tussen iterator en generator

Taak

Swipe to start coding

In de vorige opdracht heb je een oneindige dobbelsteenwerper geïmplementeerd met behulp van een aangepaste iterator-klasse. Nu ga je dezelfde functionaliteit vereenvoudigen door gebruik te maken van een generatorfunctie. Generators bieden een beknopte en leesbare manier om waarden lui te produceren met het yield-trefwoord.

  1. Definieer de generatorfunctie. Gebruik het yield-trefwoord binnen de functie dice_roller om willekeurige dobbelsteenworpen tussen 1 en 6 te genereren. Gebruik de functie random.randint() om elke worp te simuleren.
  2. Roep de functie dice_roller() aan om een generatorobject te maken en wijs dit toe aan de variabele dice_generator.
  3. Gebruik een for-lus met enumerate() om over de generator te itereren. Stop de iteratie na 10 worpen met behulp van een if-voorwaarde en de break-instructie.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 6. Hoofdstuk 4
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

close

bookIntroductie tot Generators: Waarden Genereren voor Efficiënte Iteratie

Veeg om het menu te tonen

Generators vereenvoudigen luie evaluatie door een beknopte en leesbare manier te bieden om iterators te maken. Waar een iterator wordt geïmplementeerd als een klasse met de methoden __iter__() en __next__(), wordt een generator geïmplementeerd als een functie die de yield-sleutelwoord gebruikt om waarden één voor één op te leveren. Generators behouden hun toestand automatisch tussen aanroepen, waardoor ze intuïtiever en efficiënter zijn voor veel toepassingen.

Een generator is een speciaal type functie die:

  1. Het yield-sleutelwoord gebruikt in plaats van return;
  2. De uitvoering pauzeert en zijn toestand behoudt wanneer yield wordt aangeroepen;
  3. De uitvoering hervat vanaf het punt waar deze was gestopt wanneer de generator opnieuw wordt aangeroepen.
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

Verschillen tussen iterator en generator

Taak

Swipe to start coding

In de vorige opdracht heb je een oneindige dobbelsteenwerper geïmplementeerd met behulp van een aangepaste iterator-klasse. Nu ga je dezelfde functionaliteit vereenvoudigen door gebruik te maken van een generatorfunctie. Generators bieden een beknopte en leesbare manier om waarden lui te produceren met het yield-trefwoord.

  1. Definieer de generatorfunctie. Gebruik het yield-trefwoord binnen de functie dice_roller om willekeurige dobbelsteenworpen tussen 1 en 6 te genereren. Gebruik de functie random.randint() om elke worp te simuleren.
  2. Roep de functie dice_roller() aan om een generatorobject te maken en wijs dit toe aan de variabele dice_generator.
  3. Gebruik een for-lus met enumerate() om over de generator te itereren. Stop de iteratie na 10 worpen met behulp van een if-voorwaarde en de break-instructie.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 6. Hoofdstuk 4
single

single

some-alt