Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forståelse av Iteratorer i Python | Mestre Iteratorer og Generatorer i Python
Python Strukturert Programmering

bookForståelse av Iteratorer i Python

Hva er iteratorer?

Teknisk sett er en iterator i Python et objekt som implementerer iteratorprotokollen, som består av følgende metoder:

  • __iter__(): returnerer selve iteratorobjektet, noe som gjør det kompatibelt med løkker som for;
  • __next__(): returnerer neste element i sekvensen. Når det ikke er flere elementer igjen, kaster den et StopIteration-unntak for å signalisere slutten på gjennomgangen.

En iterator muliggjør gjennomgang av elementer i en itererbar (f.eks. liste eller streng) ett om gangen, samtidig som den holder rede på posisjonen sin.

iterator = iter(iterable)

Merk

En iterator er også en itererbar fordi den implementerer __iter__()-metoden.

Ikke alle itererbare er iteratorer. For eksempel er en liste itererbar, men ikke en iterator. Når du sender den til iter()-funksjonen, får du en iterator som tillater element-for-element-gjennomgang.

Lage en egendefinert iterator

Denne iteratoren genererer et fast antall tilfeldige terningkast og stopper når alle kastene er utført.

123456789101112131415161718192021222324252627
import random class FiniteDie: def __init__(self, num_rolls): """Initialize the iterator with a fixed number of rolls.""" self.num_rolls = num_rolls self.current_roll = 0 def __iter__(self): """Return the iterator object itself.""" return self def __next__(self): """Generate the next dice roll or stop iteration.""" if self.current_roll < self.num_rolls: self.current_roll += 1 return random.randint(1, 6) raise StopIteration # Using the FiniteDie iterator num_rolls = 5 die_iterator = FiniteDie(num_rolls) print(f"Rolling the die {num_rolls} times:") for roll in die_iterator: print(f"Rolled: {roll}")
copy

Uttømming av iterator

Når en iterator er uttømt, kan den ikke brukes på nytt uten å bli opprettet på nytt. For eksempel:

12345678910
numbers = [1, 2, 3, 4] iterator = iter(numbers) # First iteration for num in iterator: print(num) # Output: 1, 2, 3, 4 # Second iteration for num in iterator: print(num) # Output: Nothing, the iterator is exhausted.
copy

Iteratorer kan kun traverseres én gang. For å iterere på nytt, må en ny iterator opprettes.

Oppgave

Swipe to start coding

Fullfør de manglende delene av koden for å implementere en egendefinert iterator-klasse som simulerer en uendelig terningkaster. Iteratoren skal generere tilfeldige kast av en seks-sidet terning på en lat måte og stoppe etter 10 kast.

  1. Metoden __iter__() gjør at et objekt kan brukes som en iterator.
  2. Metoden __next__() produserer neste tilfeldige terningkast (et tall mellom 1 og 6).
  3. Opprett en instans av klassen InfiniteDie, som representerer terningkasteren.
  4. Bruk en for-løkke med enumerate() for å kaste terningen på en lat måte. Stopp etter 10 kast ved å bruke en if-betingelse og break-setningen.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 2
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

bookForståelse av Iteratorer i Python

Sveip for å vise menyen

Hva er iteratorer?

Teknisk sett er en iterator i Python et objekt som implementerer iteratorprotokollen, som består av følgende metoder:

  • __iter__(): returnerer selve iteratorobjektet, noe som gjør det kompatibelt med løkker som for;
  • __next__(): returnerer neste element i sekvensen. Når det ikke er flere elementer igjen, kaster den et StopIteration-unntak for å signalisere slutten på gjennomgangen.

En iterator muliggjør gjennomgang av elementer i en itererbar (f.eks. liste eller streng) ett om gangen, samtidig som den holder rede på posisjonen sin.

iterator = iter(iterable)

Merk

En iterator er også en itererbar fordi den implementerer __iter__()-metoden.

Ikke alle itererbare er iteratorer. For eksempel er en liste itererbar, men ikke en iterator. Når du sender den til iter()-funksjonen, får du en iterator som tillater element-for-element-gjennomgang.

Lage en egendefinert iterator

Denne iteratoren genererer et fast antall tilfeldige terningkast og stopper når alle kastene er utført.

123456789101112131415161718192021222324252627
import random class FiniteDie: def __init__(self, num_rolls): """Initialize the iterator with a fixed number of rolls.""" self.num_rolls = num_rolls self.current_roll = 0 def __iter__(self): """Return the iterator object itself.""" return self def __next__(self): """Generate the next dice roll or stop iteration.""" if self.current_roll < self.num_rolls: self.current_roll += 1 return random.randint(1, 6) raise StopIteration # Using the FiniteDie iterator num_rolls = 5 die_iterator = FiniteDie(num_rolls) print(f"Rolling the die {num_rolls} times:") for roll in die_iterator: print(f"Rolled: {roll}")
copy

Uttømming av iterator

Når en iterator er uttømt, kan den ikke brukes på nytt uten å bli opprettet på nytt. For eksempel:

12345678910
numbers = [1, 2, 3, 4] iterator = iter(numbers) # First iteration for num in iterator: print(num) # Output: 1, 2, 3, 4 # Second iteration for num in iterator: print(num) # Output: Nothing, the iterator is exhausted.
copy

Iteratorer kan kun traverseres én gang. For å iterere på nytt, må en ny iterator opprettes.

Oppgave

Swipe to start coding

Fullfør de manglende delene av koden for å implementere en egendefinert iterator-klasse som simulerer en uendelig terningkaster. Iteratoren skal generere tilfeldige kast av en seks-sidet terning på en lat måte og stoppe etter 10 kast.

  1. Metoden __iter__() gjør at et objekt kan brukes som en iterator.
  2. Metoden __next__() produserer neste tilfeldige terningkast (et tall mellom 1 og 6).
  3. Opprett en instans av klassen InfiniteDie, som representerer terningkasteren.
  4. Bruk en for-løkke med enumerate() for å kaste terningen på en lat måte. Stopp etter 10 kast ved å bruke en if-betingelse og break-setningen.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 2
single

single

some-alt