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()__
, blirTypeError
unntaket 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 StopIteration
vilkår.
Vi kan imidlertid bruke iter()
metoden med sentinel
parameteren for å stoppe iterasjonen. Hvis verdien som returneres fra __next__()
er lik sentinel
, StopIteration
vil bli hevet, ellers vil verdien bli returnert.
Anbefalt lesing: Python Iterators