single
Uendelige Generatorer
Stryg for at vise menuen
Husk, at yield sætter en generator på pause 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 produktion 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 at iterere over en uendelig generator med en almindelig for-løkke uden en stopbetingelse – den 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