Generatorfuncties
Een generatorfunctie is een speciaal type functie die het sleutelwoord yield
gebruikt in plaats van return
om een reeks waarden te genereren. Wanneer een generatorfunctie wordt aangeroepen, retourneert deze een iteratorobject, dat kan worden doorlopen om waarden één voor één op te halen.
Het belangrijkste voordeel van generatorfuncties is hun geheugenefficiëntie. Generatorfuncties genereren waarden direct wanneer ze nodig zijn, in plaats van de volledige reeks vooraf te genereren. Dit maakt ze geheugenefficiënt, vooral bij het werken met grote datasets of oneindige reeksen.
Hier volgt een voorbeeld van een eenvoudige generator. Deze functie is een generator die logins één voor één uit de opgegeven lijst levert:
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))
Het principe van een generator is dat deze waarden één voor één kan retourneren met behulp van het sleutelwoord yield
, zonder ze allemaal tegelijk in het geheugen op te slaan. In ons voorbeeld doorloopt de generator unique_logins_from_list
de lijst met logins en retourneert elke login bij yield
, waarna de uitvoering wordt gepauzeerd. Wanneer next()
wordt aangeroepen, hervat de generator vanaf het punt waar hij was gebleven en levert efficiënt waarden zonder de volledige lijst gelijktijdig in het geheugen te hoeven opslaan. Dit maakt generators bijzonder geschikt voor het verwerken van grote datasets of datastromen.
Swipe to start coding
Genereer unieke gebruikers-ID's met behulp van een generatorfunctie. De functie id_generator()
moet voortdurend identificaties produceren zoals "ID_1"
, "ID_2"
, enzovoort.
- Initialiseer de variabele
count
met de waarde 1, omdat identificaties beginnen bij 1. - Gebruik een oneindige
while
-lus om voortdurend identificaties te genereren. - Gebruik
yield
om de huidige identificatie terug te geven in het formaatf"ID_{count}"
. - Verhoog
count
met 1 na elke iteratie. - Initialiseer het generatorobject
id_gen
doorid_generator()
aan te roepen.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4.35
Generatorfuncties
Veeg om het menu te tonen
Een generatorfunctie is een speciaal type functie die het sleutelwoord yield
gebruikt in plaats van return
om een reeks waarden te genereren. Wanneer een generatorfunctie wordt aangeroepen, retourneert deze een iteratorobject, dat kan worden doorlopen om waarden één voor één op te halen.
Het belangrijkste voordeel van generatorfuncties is hun geheugenefficiëntie. Generatorfuncties genereren waarden direct wanneer ze nodig zijn, in plaats van de volledige reeks vooraf te genereren. Dit maakt ze geheugenefficiënt, vooral bij het werken met grote datasets of oneindige reeksen.
Hier volgt een voorbeeld van een eenvoudige generator. Deze functie is een generator die logins één voor één uit de opgegeven lijst levert:
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))
Het principe van een generator is dat deze waarden één voor één kan retourneren met behulp van het sleutelwoord yield
, zonder ze allemaal tegelijk in het geheugen op te slaan. In ons voorbeeld doorloopt de generator unique_logins_from_list
de lijst met logins en retourneert elke login bij yield
, waarna de uitvoering wordt gepauzeerd. Wanneer next()
wordt aangeroepen, hervat de generator vanaf het punt waar hij was gebleven en levert efficiënt waarden zonder de volledige lijst gelijktijdig in het geheugen te hoeven opslaan. Dit maakt generators bijzonder geschikt voor het verwerken van grote datasets of datastromen.
Swipe to start coding
Genereer unieke gebruikers-ID's met behulp van een generatorfunctie. De functie id_generator()
moet voortdurend identificaties produceren zoals "ID_1"
, "ID_2"
, enzovoort.
- Initialiseer de variabele
count
met de waarde 1, omdat identificaties beginnen bij 1. - Gebruik een oneindige
while
-lus om voortdurend identificaties te genereren. - Gebruik
yield
om de huidige identificatie terug te geven in het formaatf"ID_{count}"
. - Verhoog
count
met 1 na elke iteratie. - Initialiseer het generatorobject
id_gen
doorid_generator()
aan te roepen.
Oplossing
Bedankt voor je feedback!
single