Python iter ()

Funkcija iter Python () vrne iterator za dani objekt.

iter()Funkcija ustvari predmet, ki se lahko ponavlja en element naenkrat.

Ti predmeti so uporabni v povezavi z zankami, kot je zanka for, medtem ko zanka.

Sintaksa iter()funkcije je:

 iter (objekt, stražnik)

parametri iter ()

iter()Funkcija ima dva parametra:

  • objekt - objekt, katerega iterator je treba ustvariti (lahko so nabori, nabori itd.)
  • sentinel (neobvezno) - posebna vrednost, ki se uporablja za predstavljanje konca zaporedja

Vrnjena vrednost iz iter ()

  • iter()Funkcija vrne iterator objekt za določen predmet.
  • Če uporabniško definiran objekt ne izvede __iter__()in, __next__()ali __getitem()__se vzpostavi TypeErrorizjema.
  • Če je naveden tudi parameter sentinel, iter()vrne iterator, dokler znaka sentinel ne najde.

Primer 1: Delovanje 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'

Izhod

 samoglasniki 

Primer 2: iter () za predmete po meri

 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))

Izhod

 1 2 3 Sledenje (zadnji zadnji klic): Datoteka "", vrstica 23, v datoteki "", vrstica 11, v __next__ StopIteration 

Primer 3: iter () s parametrom sentinel

 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) 

Izhod

 2 4 8

Tukaj smo uvedli objekt po meri, ki se lahko ponovi brez StopIterationpogoja.

Vendar pa lahko iter()metodo s sentinelparametrom ustavimo s ponovitvijo. Če je vrednost, vrnjena iz __next__(), enaka sentinel, StopIterationbo zvišana, sicer bo vrednost vrnjena.

Priporočeno branje: Python Iterators

Zanimive Članki...