Forstå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 somfor;__next__(): returnerer neste element i sekvensen. Når det ikke er flere elementer igjen, kaster den etStopIteration-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.
123456789101112131415161718192021222324252627import 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}")
Uttømming av iterator
Når en iterator er uttømt, kan den ikke brukes på nytt uten å bli opprettet på nytt. For eksempel:
12345678910numbers = [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.
Iteratorer kan kun traverseres én gang. For å iterere på nytt, må en ny iterator opprettes.
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.
- Metoden
__iter__()gjør at et objekt kan brukes som en iterator. - Metoden
__next__()produserer neste tilfeldige terningkast (et tall mellom 1 og 6). - Opprett en instans av klassen
InfiniteDie, som representerer terningkasteren. - 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
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.13
Forstå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 somfor;__next__(): returnerer neste element i sekvensen. Når det ikke er flere elementer igjen, kaster den etStopIteration-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.
123456789101112131415161718192021222324252627import 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}")
Uttømming av iterator
Når en iterator er uttømt, kan den ikke brukes på nytt uten å bli opprettet på nytt. For eksempel:
12345678910numbers = [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.
Iteratorer kan kun traverseres én gang. For å iterere på nytt, må en ny iterator opprettes.
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.
- Metoden
__iter__()gjør at et objekt kan brukes som en iterator. - Metoden
__next__()produserer neste tilfeldige terningkast (et tall mellom 1 og 6). - Opprett en instans av klassen
InfiniteDie, som representerer terningkasteren. - 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
Takk for tilbakemeldingene dine!
single