Python Academy · Lektion

Generators

Forstå generators og deres anvendelse til oprettelse af iteratorer.

Lektion 2 af 511 trin

Generators er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 2 af 5. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 5 lektioner i alt.

Introduktion til generatorer

Generatorer er en særlig type iterator i Python, som giver dig mulighed for at gennemløbe data dovent. I stedet for at returnere alle data på én gang leverer de ét element ad gangen, hvilket gør dem hukommelseseffektive.

I denne lektion lærer du, hvordan du opretter og bruger generatorer i Python.

Generators — illustration 1

Hvad er en generator?

En generator er en funktion, der bruger nøgleordet yield til at returnere værdier én ad gangen. Hvert kald til generatorens next()-metode genoptager udførelsen dér, hvor den sidst leverede en værdi.

# 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ådan fungerer generatorer

Generatorer gemmer funktionens tilstand, så de kan genoptage udførelsen præcis dér, hvor de slap. Det gør dem hukommelseseffektive og velegnede til store datasæt.

# 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

Generatorudtryk

Generatorudtryk minder om listeforståelser, men bruger parenteser i stedet for kantede parenteser. De opretter generatorer i stedet for lister.

# 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 sammenlignet med lister

Generatorer er mere hukommelseseffektive end lister, fordi de ikke gemmer alle data i hukommelsen. I stedet genererer de data undervejs.

# 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'>

Anvendelsesområder for generatorer

Generatorer er velegnede til:

  • Behandling af store datasæt, der ikke kan være i hukommelsen.
  • Generering af uendelige sekvenser.
  • Doven evaluering af data.

Uendelige generatorer

Generatorer kan producere uendelige sekvenser, f.eks. en endeløs talrække. Sørg for at stoppe løkken for at forhindre uendelig udførelse.

# 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 flere yield-værdier

Generatorfunktioner kan indeholde flere yield-sætninger, så du kan oprette komplekse 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

Almindelige fejl med generatorer

Her er nogle fejl, du bør undgå:

  • At bruge return i stedet for yield i en generatorfunktion.
  • Ikke at forbruge generatoren med en løkke eller next().
  • At bruge generatorer til små datasæt, hvor lister er mere velegnede.

Hvad har du lært?

I denne lektion har du lært:

  • Hvad generatorer er, og hvordan de fungerer i Python.
  • Hvordan du bruger yield til at oprette generatorfunktioner.
  • Forskellene mellem generatorer og lister.
  • Anvendelsesområder for generatorer, f.eks. uendelige sekvenser og store datasæt.

Godt klaret! Lad os gå videre til det næste emne.

Generators — illustration 11
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Generators” gratis?

Ja — hele teksten til “Generators” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 5 lektioner i alt.

Hvad lærer jeg i “Generators”?

Forstå generators og deres anvendelse til oprettelse af iteratorer. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 5.

Hvor lang tid tager lektionen “Generators”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Decorators
  2. Generators
  3. Context managers (with-udtryk)
  4. Comprehensions (lister, sæt og dictionaries)
  5. Iteratorer og iterables
← Tilbage til Python Academy