Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Introduktion till Generatorer: Generering av Värden för Effektiv Iteration | Bemästra Iteratorer och Generatorer i Python
Python Strukturell Programmering

bookIntroduktion till Generatorer: Generering av Värden för Effektiv Iteration

Generatorer förenklar lat utvärdering genom att erbjuda ett koncist och läsbart sätt att skapa iteratorer. Medan en iterator implementeras som en klass med metoderna __iter__() och __next__(), implementeras en generator som en funktion som använder nyckelordet yield för att producera värden ett i taget. Generatorer behåller automatiskt sitt tillstånd mellan anrop, vilket gör dem mer intuitiva och effektiva för många användningsområden.

En generator är en speciell typ av funktion som:

  1. Använder nyckelordet yield istället för return;
  2. Pausar exekveringen och behåller sitt tillstånd när yield anropas;
  3. Återupptar exekveringen från där den pausades när generatorn anropas 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

Skillnader mellan iterator och generator

Uppgift

Swipe to start coding

I den föregående uppgiften implementerade du en oändlig tärningskastare med hjälp av en anpassad iterator-klass. Nu ska du förenkla samma funktionalitet genom att använda en generatorfunktion. Generatorer erbjuder ett koncist och lättläst sätt att skapa värden på begäran med hjälp av nyckelordet yield.

  1. Definiera generatorfunktionen. Använd nyckelordet yield inuti funktionen dice_roller för att generera slumpmässiga tärningskast mellan 1 och 6. Använd funktionen random.randint() för att simulera varje kast.
  2. Anropa funktionen dice_roller() för att skapa ett generatorobjekt och tilldela det till variabeln dice_generator.
  3. Använd en for-loop med enumerate() för att iterera över generatorn. Avsluta iterationen efter 10 kast med hjälp av en if-sats och kommandot break.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 6. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

bookIntroduktion till Generatorer: Generering av Värden för Effektiv Iteration

Svep för att visa menyn

Generatorer förenklar lat utvärdering genom att erbjuda ett koncist och läsbart sätt att skapa iteratorer. Medan en iterator implementeras som en klass med metoderna __iter__() och __next__(), implementeras en generator som en funktion som använder nyckelordet yield för att producera värden ett i taget. Generatorer behåller automatiskt sitt tillstånd mellan anrop, vilket gör dem mer intuitiva och effektiva för många användningsområden.

En generator är en speciell typ av funktion som:

  1. Använder nyckelordet yield istället för return;
  2. Pausar exekveringen och behåller sitt tillstånd när yield anropas;
  3. Återupptar exekveringen från där den pausades när generatorn anropas 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

Skillnader mellan iterator och generator

Uppgift

Swipe to start coding

I den föregående uppgiften implementerade du en oändlig tärningskastare med hjälp av en anpassad iterator-klass. Nu ska du förenkla samma funktionalitet genom att använda en generatorfunktion. Generatorer erbjuder ett koncist och lättläst sätt att skapa värden på begäran med hjälp av nyckelordet yield.

  1. Definiera generatorfunktionen. Använd nyckelordet yield inuti funktionen dice_roller för att generera slumpmässiga tärningskast mellan 1 och 6. Använd funktionen random.randint() för att simulera varje kast.
  2. Anropa funktionen dice_roller() för att skapa ett generatorobjekt och tilldela det till variabeln dice_generator.
  3. Använd en for-loop med enumerate() för att iterera över generatorn. Avsluta iterationen efter 10 kast med hjälp av en if-sats och kommandot break.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 6. Kapitel 4
single

single

some-alt