Generatorfuncties
Een generatorfunctie is een speciaal type functie die de yield-sleutelwoord 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.
Bekijk een eenvoudig generatorvoorbeeld. Deze functie levert logins één voor één uit de opgegeven lijst:
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 yield-sleutelwoord, 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, waarbij de uitvoering op dat punt 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", enz.
- Initialiseer de variabele
countmet de waarde 1, aangezien identificaties beginnen bij 1. - Gebruik een oneindige
while-lus om voortdurend identificaties te genereren. - Gebruik
yieldom de huidige identificatie terug te geven in het formaatf"ID_{count}". - Verhoog
countmet 1 na elke iteratie. - Initialiseer het generatorobject
id_gendoorid_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.
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.17
Generatorfuncties
Veeg om het menu te tonen
Een generatorfunctie is een speciaal type functie die de yield-sleutelwoord 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.
Bekijk een eenvoudig generatorvoorbeeld. Deze functie levert logins één voor één uit de opgegeven lijst:
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 yield-sleutelwoord, 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, waarbij de uitvoering op dat punt 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", enz.
- Initialiseer de variabele
countmet de waarde 1, aangezien identificaties beginnen bij 1. - Gebruik een oneindige
while-lus om voortdurend identificaties te genereren. - Gebruik
yieldom de huidige identificatie terug te geven in het formaatf"ID_{count}". - Verhoog
countmet 1 na elke iteratie. - Initialiseer het generatorobject
id_gendoorid_generator()aan te roepen.
Oplossing
Bedankt voor je feedback!
single