Python iter ()

Python iter () -funksjonen returnerer en iterator for det gitte objektet.

Den iter()funksjon skaper en gjenstand som kan itereres ett element om gangen.

Disse objektene er nyttige når de kombineres med sløyfer som for loop, mens loop.

Syntaksen til iter()funksjonen er:

 iter (objekt, vaktpost)

iter () Parametere

Den iter()funksjonen tar to parametere:

  • objekt - objekt hvis iteratoren må opprettes (kan være sett, tupler osv.)
  • sentinel (valgfritt) - spesiell verdi som brukes til å representere slutten av en sekvens

Returverdi fra iter ()

  • Den iter()funksjonen returnerer en iteratorblokk ikke gjenstand for den gitte objektet.
  • Hvis det brukerdefinerte objektet ikke implementeres __iter__(), og __next__()eller __getitem()__, blir TypeErrorunntaket hevet.
  • Hvis sentinel-parameteren også er gitt, iter()returnerer en iterator til sentinel-tegnet ikke blir funnet.

Eksempel 1: Arbeid av Python iter ()

 # list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'

Produksjon

 aeiou 

Eksempel 2: iter () for egendefinerte objekter

 class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))

Produksjon

 1 2 3 Sporing (siste samtale sist): Fil "", linje 23, i fil "", linje 11, i __neste__ StopIteration 

Eksempel 3: iter () med sentinel-parameter

 class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x) 

Produksjon

 2 4 8

Her har vi implementert et tilpasset iterabelt objekt uten StopIterationvilkår.

Vi kan imidlertid bruke iter()metoden med sentinelparameteren for å stoppe iterasjonen. Hvis verdien som returneres fra __next__()er lik sentinel, StopIterationvil bli hevet, ellers vil verdien bli returnert.

Anbefalt lesing: Python Iterators

Interessante artikler...