Lär Er AI med Python · 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 Lär Er AI med Python på CoddyKit. Detta är lektion 2 av 5. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 5 lektioner.

Introduktion till generatorer

Generatorer är en särskild typ av iterator i Python som gör det möjligt att iterera över data först när den behövs. I stället för att returnera all data på en gång ger de ett objekt i taget med yield, vilket gör dem minneseffektiva.

I den här lektionen lär du 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 till generatorns metod next() återupptar körningen där den senast returnerade ett värde.

# 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 den avbröts. 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 direkt när den behövs.

# 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 är idealiska för:

  • Bearbetning av stora datamängder som inte får plats i minnet.
  • Generering av oändliga sekvenser.
  • Lat utvärdering av data.

Oändliga generatorer

Generatorer kan skapa oändliga sekvenser, till exempel en ändlös sekvens 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, så 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:

  • Använda return i stället för yield i en generatorfunktion.
  • Inte förbruka generatorn med en loop eller next().
  • Använda generatorer för små datamängder där listor är lämpligare.

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
53
Lektioner
225

Vanliga frågor

Är lektionen ”Generatorer” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Generatorer”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python 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å Lär Er AI med Python 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 Lär Er AI med Python?

Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python 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 Lär Er AI med Python-lektionen?

Ja. Varje Lär Er AI med Python-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 lexikon)
  5. Iteratorer och itererbara objekt
← Tillbaka till Lär Er AI med Python