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

bookPython-Itererbare Objekter: Forståelse av Sekvenser og Datastrukturer

Hva er iterable objekter?

I Python er iterable objekter objekter som kan traverseres eller gjennomløpes, og returnerer sine elementer ett om gangen. Denne evnen til å produsere ett element av gangen gjør dem uvurderlige i oppgaver som løkker, list comprehension og oppakking.

Noen vanlige iterable objekter inkluderer:

  • Datastrukturer: lister, tupler, ordbøker, mengder;
  • Strenger: produserer sine tegn ett om gangen;
  • Egendefinerte objekter: gjøres iterable ved å implementere __iter__-metoden.

En viktig egenskap ved iterable objekter er at de ikke "husker" sin posisjon under gjennomløpingen. For å faktisk traversere elementene deres, kreves det en iterator.

1234567
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
copy

for-løkka traverserer automatisk elementene i det iterable objektet og behandler dem ett om gangen.

Når Python behandler et iterable objekt, konverterer det objektet til en iterator ved å bruke iter()-funksjonen. Internt kaller iter() objektets __iter__()-metode. Tilsvarende henter next()-funksjonen neste verdi fra iteratoren ved å kalle dens __next__()-metode.

Her er et eksempel som demonstrerer hvordan dette fungerer:

12345678910
numbers = [1, 2, 3, 4] # Converting the list to an iterator numbers_iterator = iter(numbers) # Accessing elements one at a time using `next()` print(next(numbers_iterator)) # Output: 1 print(next(numbers_iterator)) # Output: 2 print(next(numbers_iterator)) # Output: 3 print(next(numbers_iterator)) # Output: 4 print(next(numbers_iterator)) # Output: StopIteration
copy

Iterable objekter vs. iteratorer

Selv om alle iteratorer er iterable objekter, er ikke alle iterable objekter iteratorer. En iterator husker sin posisjon under gjennomgang og gir tilgang til elementene sekvensielt til slutten er nådd.

Begrensning ved iterable objekter

Ved arbeid med store datasett kan det være ineffektivt å lagre alle elementene i en iterable som en liste. For eksempel, hvis tallsekvensen genereres dynamisk eller er for stor til å få plass i minnet, trenger vi en måte å behandle elementene på etter behov. Dette er hvor iteratorer (dekkes i neste kapittel) og lat evaluering (introduseres senere) blir avgjørende.

Oppgave

Swipe to start coding

Skriv et Python-skript for å simulere kast med en stokket seks-sidet terning ved hjelp av iteratorer. Fullfør de manglende delene av koden for å lage en iterator, hente elementer med next(), og håndtere slutten av iterasjonen på en ryddig måte.

  1. En liste [1, 2, 3, 4, 5, 6] representerer terningens sider. Listen er allerede stokket med random.shuffle().
  2. Konverter den stokkede listen til en iterator slik at du kan traversere elementene én om gangen.
  3. Bruk funksjonen next() for å simulere terningkast og skriv ut hver side til alle sidene er brukt.
  4. Når iteratoren er tom, håndter StopIteration-unntaket for å indikere at alle kast er fullført.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 1
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

Suggested prompts:

Can you explain the difference between an iterable and an iterator in simpler terms?

How do I make my own object iterable in Python?

What happens if I call next() too many times on an iterator?

close

bookPython-Itererbare Objekter: Forståelse av Sekvenser og Datastrukturer

Sveip for å vise menyen

Hva er iterable objekter?

I Python er iterable objekter objekter som kan traverseres eller gjennomløpes, og returnerer sine elementer ett om gangen. Denne evnen til å produsere ett element av gangen gjør dem uvurderlige i oppgaver som løkker, list comprehension og oppakking.

Noen vanlige iterable objekter inkluderer:

  • Datastrukturer: lister, tupler, ordbøker, mengder;
  • Strenger: produserer sine tegn ett om gangen;
  • Egendefinerte objekter: gjøres iterable ved å implementere __iter__-metoden.

En viktig egenskap ved iterable objekter er at de ikke "husker" sin posisjon under gjennomløpingen. For å faktisk traversere elementene deres, kreves det en iterator.

1234567
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
copy

for-løkka traverserer automatisk elementene i det iterable objektet og behandler dem ett om gangen.

Når Python behandler et iterable objekt, konverterer det objektet til en iterator ved å bruke iter()-funksjonen. Internt kaller iter() objektets __iter__()-metode. Tilsvarende henter next()-funksjonen neste verdi fra iteratoren ved å kalle dens __next__()-metode.

Her er et eksempel som demonstrerer hvordan dette fungerer:

12345678910
numbers = [1, 2, 3, 4] # Converting the list to an iterator numbers_iterator = iter(numbers) # Accessing elements one at a time using `next()` print(next(numbers_iterator)) # Output: 1 print(next(numbers_iterator)) # Output: 2 print(next(numbers_iterator)) # Output: 3 print(next(numbers_iterator)) # Output: 4 print(next(numbers_iterator)) # Output: StopIteration
copy

Iterable objekter vs. iteratorer

Selv om alle iteratorer er iterable objekter, er ikke alle iterable objekter iteratorer. En iterator husker sin posisjon under gjennomgang og gir tilgang til elementene sekvensielt til slutten er nådd.

Begrensning ved iterable objekter

Ved arbeid med store datasett kan det være ineffektivt å lagre alle elementene i en iterable som en liste. For eksempel, hvis tallsekvensen genereres dynamisk eller er for stor til å få plass i minnet, trenger vi en måte å behandle elementene på etter behov. Dette er hvor iteratorer (dekkes i neste kapittel) og lat evaluering (introduseres senere) blir avgjørende.

Oppgave

Swipe to start coding

Skriv et Python-skript for å simulere kast med en stokket seks-sidet terning ved hjelp av iteratorer. Fullfør de manglende delene av koden for å lage en iterator, hente elementer med next(), og håndtere slutten av iterasjonen på en ryddig måte.

  1. En liste [1, 2, 3, 4, 5, 6] representerer terningens sider. Listen er allerede stokket med random.shuffle().
  2. Konverter den stokkede listen til en iterator slik at du kan traversere elementene én om gangen.
  3. Bruk funksjonen next() for å simulere terningkast og skriv ut hver side til alle sidene er brukt.
  4. Når iteratoren er tom, håndter StopIteration-unntaket for å indikere at alle kast er fullført.

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 1
single

single

some-alt