single
Generator-Funksjoner
Sveip for å vise menyen
En generatorfunksjon er en spesiell type funksjon som bruker nøkkelordet yield i stedet for return for å generere en sekvens av verdier. Når en generatorfunksjon kalles, returnerer den et iteratorobjekt, som kan itereres over for å hente ut verdier én om gangen.
Hovedfordelen med generatorfunksjoner er deres minneeffektivitet. I stedet for å generere hele sekvensen på forhånd og lagre den i minnet, produserer generatorer verdier løpende etter hvert som de trengs.
Hvordan yield fungerer
I motsetning til return, som avslutter funksjonen helt, pauser yield funksjonen og lagrer dens tilstand. Neste gang next() kalles, fortsetter generatoren nøyaktig der den slapp:
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 med en for-løkke – den kaller automatisk next() til generatoren er tom:
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 tom (ingen flere verdier å gi med yield), vil et kall til next() på den utløse en StopIteration-feil. En for-løkke håndterer dette automatisk.
Sveip for å begynne å kode
Implementer en generatorfunksjon even_numbers som gir ut partall innenfor et gitt intervall.
- Definer en generatorfunksjon
even_numberssom tar to parametere:startogstop. - Bruk en
while-løkke for å iterere så lengestarter mindre enn eller likstop. - Bruk
yieldfor å returnerestartkun hvis det er et partall (delelig med 2). - Øk
startmed 1 etter hver iterasjon. - Bruk en
for-løkke for å skrive ut alle genererte verdier.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår