single
Generatorfunktioner
Stryg for at vise menuen
En generatorfunktion er en særlig type funktion, der bruger nøgleordet yield i stedet for return til at generere en sekvens af værdier. Når en generatorfunktion kaldes, returnerer den et iteratorobjekt, som kan itereres over for at hente værdier én ad gangen.
Den primære fordel ved generatorfunktioner er deres hukommelseseffektivitet. I stedet for at generere hele sekvensen på forhånd og gemme den i hukommelsen, producerer generatorer værdier løbende efter behov.
Sådan fungerer yield
I modsætning til return, som afslutter funktionen helt, pauser yield funktionen og gemmer dens tilstand. Næste gang next() kaldes, genoptager generatoren præcis der, hvor den slap:
12345678910def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3
Du kan også iterere over en generator ved hjælp af en for-løkke – den kalder automatisk next() indtil generatoren er udtømt:
1234567def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Når en generator er udtømt (ingen flere værdier at yield'e), vil et kald til next() på den udløse en StopIteration-fejl. En for-løkke håndterer dette automatisk.
Swipe to start coding
Implementér en generatorfunktion even_numbers, der returnerer lige tal inden for et givet interval.
- Definér en generatorfunktion
even_numbers, som tager to parametre:startogstop. - Brug en
while-løkke til at iterere, så længestarter mindre end eller lig medstop. - Brug
yieldtil kun at returnerestart, hvis det er et lige tal (deleligt med 2). - Øg
startmed 1 efter hver iteration. - Brug en
for-løkke til at udskrive alle genererede værdier.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat