Generator-funksjoner
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. Generatorfunksjoner genererer verdier fortløpende etter hvert som de trengs, i stedet for å generere hele sekvensen på forhånd. Dette gjør dem minneeffektive, spesielt ved håndtering av store datasett eller uendelige sekvenser.
Se et enkelt eksempel på en generator. Denne funksjonen gir utlogg én etter én fra den gitte listen:
12345678910111213141516def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
Prinsippet bak en generator er at den gjør det mulig å returnere verdier én om gangen ved hjelp av nøkkelordet yield
, uten å lagre alle verdiene i minnet samtidig. I vårt eksempel itererer generatoren unique_logins_from_list
gjennom listen av innlogginger, returnerer hver enkelt ved yield
og pauser på det punktet. Når next()
kalles, fortsetter generatoren der den slapp, og gir effektivt ut verdier uten å måtte lagre hele listen i minnet samtidig. Dette gjør generatorer spesielt nyttige for håndtering av store datasett eller datastrømmer.
Swipe to start coding
Generer unike bruker-ID-er ved hjelp av en generatorfunksjon. Funksjonen id_generator()
skal kontinuerlig produsere identifikatorer som "ID_1"
, "ID_2"
, osv.
- Initialiser variabelen
count
med verdien 1, siden identifikatorene starter fra 1. - Bruk en uendelig
while
-løkke for å kontinuerlig generere identifikatorer. - Bruk
yield
for å returnere gjeldende identifikator i formatetf"ID_{count}"
. - Øk
count
med 1 etter hver iterasjon. - Initialiser generatorobjektet
id_gen
ved å kalleid_generator()
.
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
Can you explain how the generator resumes execution after each yield?
What happens if I call next() more times than there are items in the list?
Can you show a real-world scenario where using a generator is better than a regular function?
Awesome!
Completion rate improved to 4.35
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. Generatorfunksjoner genererer verdier fortløpende etter hvert som de trengs, i stedet for å generere hele sekvensen på forhånd. Dette gjør dem minneeffektive, spesielt ved håndtering av store datasett eller uendelige sekvenser.
Se et enkelt eksempel på en generator. Denne funksjonen gir utlogg én etter én fra den gitte listen:
12345678910111213141516def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
Prinsippet bak en generator er at den gjør det mulig å returnere verdier én om gangen ved hjelp av nøkkelordet yield
, uten å lagre alle verdiene i minnet samtidig. I vårt eksempel itererer generatoren unique_logins_from_list
gjennom listen av innlogginger, returnerer hver enkelt ved yield
og pauser på det punktet. Når next()
kalles, fortsetter generatoren der den slapp, og gir effektivt ut verdier uten å måtte lagre hele listen i minnet samtidig. Dette gjør generatorer spesielt nyttige for håndtering av store datasett eller datastrømmer.
Swipe to start coding
Generer unike bruker-ID-er ved hjelp av en generatorfunksjon. Funksjonen id_generator()
skal kontinuerlig produsere identifikatorer som "ID_1"
, "ID_2"
, osv.
- Initialiser variabelen
count
med verdien 1, siden identifikatorene starter fra 1. - Bruk en uendelig
while
-løkke for å kontinuerlig generere identifikatorer. - Bruk
yield
for å returnere gjeldende identifikator i formatetf"ID_{count}"
. - Øk
count
med 1 etter hver iterasjon. - Initialiser generatorobjektet
id_gen
ved å kalleid_generator()
.
Løsning
Takk for tilbakemeldingene dine!
single