Python Academy · Lektion

Generatorer

Förstå generatorer och hur de används för att skapa iteratorer.

Lektion 2 av 511 steg

Generatorer är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 2 av 5. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 5 lektioner.

Introduktion till generatorer

Generatorer är en särskild typ av iteratorer i Python som låter dig iterera över data stegvis vid behov. I stället för att returnera all data på en gång ger de ett element i taget, vilket gör dem minneseffektiva.

I den här lektionen får du lära dig hur du skapar och använder generatorer i Python.

Generatorer — illustration 1

Vad är en generator?

En generator är en funktion som använder nyckelordet yield för att returnera värden ett i taget. Varje anrop av generatorns next()-metod återupptar körningen där generatorn senast pausades.

# Basic generator example
def my_generator():
    yield 1
    yield 2
    yield 3

# Using the generator
gen = my_generator()
print(next(gen))  # Outputs: 1
print(next(gen))  # Outputs: 2
print(next(gen))  # Outputs: 3

Så fungerar generatorer

Generatorer sparar funktionens tillstånd så att de kan återuppta körningen exakt där de slutade. Det gör dem minneseffektiva och idealiska för stora datamängder.

# Example: Generating a range of numbers
def range_generator(start, end):
    while start < end:
        yield start
        start += 1

for number in range_generator(1, 5):
    print(number)  # Outputs: 1, 2, 3, 4

Generatoruttryck

Generatoruttryck liknar listkomprehensioner, men använder parenteser i stället för hakparenteser. De skapar generatorer i stället för listor.

# Generator expression
gen_exp = (x * x for x in range(5))

for value in gen_exp:
    print(value)  # Outputs: 0, 1, 4, 9, 16

Generatorer jämfört med listor

Generatorer är minneseffektivare än listor eftersom de inte lagrar all data i minnet. I stället genererar de data efter hand.

# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]

# Generator expression
gen_exp = (x * x for x in range(1000000))

# List comprehension uses more memory
print(type(list_comp))  # Outputs: <class 'list'>
print(type(gen_exp))    # Outputs: <class 'generator'>

Användningsområden för generatorer

Generatorer passar utmärkt för:

  • Bearbetning av stora datamängder som inte ryms i minnet.
  • Generering av oändliga sekvenser.
  • Utvärdering av data vid behov.

Oändliga generatorer

Generatorer kan skapa oändliga sekvenser, till exempel en ändlös följd av tal. Se till att stoppa loopen för att förhindra oändlig körning.

# Infinite generator example
def infinite_sequence():
    num = 0
    while True:
        yield num
        num += 1

# Using the infinite generator
for i in infinite_sequence():
    if i > 5:
        break
    print(i)  # Outputs: 0, 1, 2, 3, 4, 5

Generatorfunktioner med flera yield-satser

Generatorfunktioner kan innehålla flera yield-satser, vilket gör att du kan skapa komplexa sekvenser:

# Multiple yields in a generator
def multi_yield():
    yield "First"
    yield "Second"
    yield "Third"

for value in multi_yield():
    print(value)  # Outputs: First, Second, Third

Vanliga misstag med generatorer

Här är några misstag du bör undvika:

  • Att använda return i stället för yield i en generatorfunktion.
  • Att inte använda generatorn i en loop eller med next().
  • Att använda generatorer för små datamängder där listor passar bättre.

Vad har vi lärt oss?

I den här lektionen har du lärt dig:

  • Vad generatorer är och hur de fungerar i Python.
  • Hur du använder yield för att skapa generatorfunktioner.
  • Skillnaderna mellan generatorer och listor.
  • Användningsområden för generatorer, till exempel oändliga sekvenser och stora datamängder.

Bra jobbat! Nu går vi vidare till nästa ämne.

Generatorer — illustration 11
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Generatorer” gratis?

Ja – hela texten till ”Generatorer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 5 lektioner.

Vad lär jag mig i ”Generatorer”?

Förstå generatorer och hur de används för att skapa iteratorer. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 5.

Hur lång tid tar lektionen ”Generatorer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Dekoratorer
  2. Generatorer
  3. Kontexthanterare (with-satser)
  4. Comprehensions (listor, mängder och dictionaries)
  5. Iteratorer och itererbara objekt
← Tillbaka till Python Academy