Uendelige Generatorer
Husk, at yield pauser en generator og genoptager den ved næste next()-kald. Indtil nu har de generatorer, du har set, haft et tydeligt stoppunkt. Men generatorer bliver særligt kraftfulde, når de kombineres med et uendeligt loop – hvilket muliggør generering af værdier uendeligt uden nogensinde at gemme dem i hukommelsen.
Uendelige generatorer med while True
Brug af et while True-loop inde i en generator skaber en uendelig sekvens – noget, der ville være umuligt at gemme som en liste. Generatoren producerer kun den næste værdi, når next() kaldes:
1234567891011def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3
Uanset hvor mange gange du kalder next(), vil generatoren altid have en ny værdi klar – den kører aldrig forud eller gemmer værdier i hukommelsen.
Styring af en uendelig generator
Da generatoren kører uendeligt, skal du styre, hvor mange værdier du henter. Den mest almindelige metode er at bruge en for-løkke med range():
12345678910def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Undlad altid at iterere over en uendelig generator med en almindelig for-løkke uden en stopbetingelse – det vil køre uendeligt og få dit program til at gå ned.
Tak for dine kommentarer!
single
Uendelige Generatorer
Stryg for at vise menuen
Husk, at yield pauser en generator og genoptager den ved næste next()-kald. Indtil nu har de generatorer, du har set, haft et tydeligt stoppunkt. Men generatorer bliver særligt kraftfulde, når de kombineres med et uendeligt loop – hvilket muliggør generering af værdier uendeligt uden nogensinde at gemme dem i hukommelsen.
Uendelige generatorer med while True
Brug af et while True-loop inde i en generator skaber en uendelig sekvens – noget, der ville være umuligt at gemme som en liste. Generatoren producerer kun den næste værdi, når next() kaldes:
1234567891011def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3
Uanset hvor mange gange du kalder next(), vil generatoren altid have en ny værdi klar – den kører aldrig forud eller gemmer værdier i hukommelsen.
Styring af en uendelig generator
Da generatoren kører uendeligt, skal du styre, hvor mange værdier du henter. Den mest almindelige metode er at bruge en for-løkke med range():
12345678910def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Undlad altid at iterere over en uendelig generator med en almindelig for-løkke uden en stopbetingelse – det vil køre uendeligt og få dit program til at gå ned.
Swipe to start coding
Generér unikke bruger-ID'er ved hjælp af en uendelig generatorfunktion. Funktionen id_generator() skal kontinuerligt producere identifikatorer som 'ID_1', 'ID_2' osv.
- Initialisér variablen
countmed værdien 1, da identifikatorer starter fra 1. - Brug en uendelig
while-løkke til at generere identifikatorer kontinuerligt. - Brug
yieldtil at returnere den aktuelle identifikator i formatetf'ID_{count}'. - Inkrementér
countmed 1 efter hver iteration. - Initialisér generatorobjektet
id_genved at kaldeid_generator().
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat