Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Generatorfunktioner | Specifikation af Funktions Returværdi
Python Funktioner Vejledning

bookGeneratorfunktioner

En generatorfunktion er en særlig type funktion, der anvender 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. Generatorfunktioner genererer værdier løbende, efterhånden som de skal bruges, i stedet for at generere hele sekvensen på forhånd. Dette gør dem hukommelseseffektive, især ved håndtering af store datasæt eller uendelige sekvenser.

Overvej et simpelt generator-eksempel. Denne funktion leverer logins én ad gangen fra den angivne liste:

12345678910111213141516
def 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))
copy

Princippet bag en generator er, at den muliggør returnering af værdier én ad gangen ved hjælp af nøgleordet yield, uden at gemme dem alle i hukommelsen på én gang. I vores eksempel gennemløber generatoren unique_logins_from_list listen af logins og returnerer hver enkelt ved yield og holder pause på det punkt. Når next() kaldes, genoptager generatoren fra det sted, hvor den slap, og leverer effektivt værdier uden at skulle gemme hele listen i hukommelsen samtidigt. Dette gør generatorer særligt anvendelige til håndtering af store datasæt eller datastrømme.

Opgave

Swipe to start coding

Generér unikke bruger-ID'er ved hjælp af en generatorfunktion. Funktionen id_generator() skal kontinuerligt producere identifikatorer som "ID_1", "ID_2" osv.

  1. Initialisér variablen count med værdien 1, da identifikatorer starter fra 1.
  2. Brug en uendelig while-løkke til at generere identifikatorer kontinuerligt.
  3. Brug yield til at returnere den aktuelle identifikator i formatet f"ID_{count}".
  4. Inkrementér count med 1 efter hver iteration.
  5. Initialisér generatorobjektet id_gen ved at kalde id_generator().

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 4.35

bookGeneratorfunktioner

Stryg for at vise menuen

En generatorfunktion er en særlig type funktion, der anvender 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. Generatorfunktioner genererer værdier løbende, efterhånden som de skal bruges, i stedet for at generere hele sekvensen på forhånd. Dette gør dem hukommelseseffektive, især ved håndtering af store datasæt eller uendelige sekvenser.

Overvej et simpelt generator-eksempel. Denne funktion leverer logins én ad gangen fra den angivne liste:

12345678910111213141516
def 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))
copy

Princippet bag en generator er, at den muliggør returnering af værdier én ad gangen ved hjælp af nøgleordet yield, uden at gemme dem alle i hukommelsen på én gang. I vores eksempel gennemløber generatoren unique_logins_from_list listen af logins og returnerer hver enkelt ved yield og holder pause på det punkt. Når next() kaldes, genoptager generatoren fra det sted, hvor den slap, og leverer effektivt værdier uden at skulle gemme hele listen i hukommelsen samtidigt. Dette gør generatorer særligt anvendelige til håndtering af store datasæt eller datastrømme.

Opgave

Swipe to start coding

Generér unikke bruger-ID'er ved hjælp af en generatorfunktion. Funktionen id_generator() skal kontinuerligt producere identifikatorer som "ID_1", "ID_2" osv.

  1. Initialisér variablen count med værdien 1, da identifikatorer starter fra 1.
  2. Brug en uendelig while-løkke til at generere identifikatorer kontinuerligt.
  3. Brug yield til at returnere den aktuelle identifikator i formatet f"ID_{count}".
  4. Inkrementér count med 1 efter hver iteration.
  5. Initialisér generatorobjektet id_gen ved at kalde id_generator().

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 4
single

single

some-alt