Generatorfunktioner
En generatorfunktion är en speciell typ av funktion som använder nyckelordet yield
istället för return
för att generera en sekvens av värden. När en generatorfunktion anropas returnerar den ett iteratorobjekt, vilket kan itereras över för att hämta värden ett i taget.
Den främsta fördelen med generatorfunktioner är deras minneseffektivitet. Generatorfunktioner genererar värden vid behov, istället för att skapa hela sekvensen på en gång. Detta gör dem minneseffektiva, särskilt vid hantering av stora datamängder eller oändliga sekvenser.
Betrakta ett enkelt exempel på en generator. Denna funktion returnerar inloggningar en i taget från den angivna listan:
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))
Principen för en generator är att den möjliggör att värden returneras ett i taget med hjälp av nyckelordet yield
, utan att lagra dem alla i minnet samtidigt. I vårt exempel itererar generatorn unique_logins_from_list
genom listan av inloggningar och returnerar varje vid yield
och pausar vid den punkten. När next()
anropas återupptar generatorn där den slutade, och levererar värden utan att behöva lagra hela listan i minnet samtidigt. Detta gör generatorer särskilt användbara för hantering av stora datamängder eller dataströmmar.
Swipe to start coding
Generera unika användar-ID med hjälp av en generatorfunktion. Funktionen id_generator()
ska kontinuerligt skapa identifierare som "ID_1"
, "ID_2"
osv.
- Initiera variabeln
count
med värdet 1, eftersom identifierare börjar från 1. - Använd en oändlig
while
-loop för att kontinuerligt generera identifierare. - Använd
yield
för att returnera den aktuella identifieraren i formatetf"ID_{count}"
. - Inkrementera
count
med 1 efter varje iteration. - Initiera generatorobjektet
id_gen
genom att anropaid_generator()
.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 4.35
Generatorfunktioner
Svep för att visa menyn
En generatorfunktion är en speciell typ av funktion som använder nyckelordet yield
istället för return
för att generera en sekvens av värden. När en generatorfunktion anropas returnerar den ett iteratorobjekt, vilket kan itereras över för att hämta värden ett i taget.
Den främsta fördelen med generatorfunktioner är deras minneseffektivitet. Generatorfunktioner genererar värden vid behov, istället för att skapa hela sekvensen på en gång. Detta gör dem minneseffektiva, särskilt vid hantering av stora datamängder eller oändliga sekvenser.
Betrakta ett enkelt exempel på en generator. Denna funktion returnerar inloggningar en i taget från den angivna listan:
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))
Principen för en generator är att den möjliggör att värden returneras ett i taget med hjälp av nyckelordet yield
, utan att lagra dem alla i minnet samtidigt. I vårt exempel itererar generatorn unique_logins_from_list
genom listan av inloggningar och returnerar varje vid yield
och pausar vid den punkten. När next()
anropas återupptar generatorn där den slutade, och levererar värden utan att behöva lagra hela listan i minnet samtidigt. Detta gör generatorer särskilt användbara för hantering av stora datamängder eller dataströmmar.
Swipe to start coding
Generera unika användar-ID med hjälp av en generatorfunktion. Funktionen id_generator()
ska kontinuerligt skapa identifierare som "ID_1"
, "ID_2"
osv.
- Initiera variabeln
count
med värdet 1, eftersom identifierare börjar från 1. - Använd en oändlig
while
-loop för att kontinuerligt generera identifierare. - Använd
yield
för att returnera den aktuella identifieraren i formatetf"ID_{count}"
. - Inkrementera
count
med 1 efter varje iteration. - Initiera generatorobjektet
id_gen
genom att anropaid_generator()
.
Lösning
Tack för dina kommentarer!
single