Python-iter ()

Python iter () -funktio palauttaa iteraattorin annetulle objektille.

iter()Toiminto luo esine, jota voidaan iteroida yksi osa kerrallaan.

Nämä objektit ovat hyödyllisiä yhdistettynä silmukoihin, kuten silmukkaan, kun taas silmukkaan.

iter()Funktion syntaksi on:

 iter (esine, vartija)

iter () -parametrit

iter()Toiminto otetaan kaksi parametria:

  • esine - esine, jonka iteraattori on luotava (voi olla joukkoa, joukkoa jne.)
  • sentinel (valinnainen) - erityisarvo, jota käytetään kuvaamaan sekvenssin loppua

Palautusarvo iteriltä ()

  • iter()Funktio palauttaa iteraattorin objekti tietyn kohteen.
  • Jos käyttäjän määrittelemä objekti ei toteuta __iter__()ja __next__()tai __getitem()__, TypeErrorpoikkeus nousee.
  • Jos sentinel-parametri on myös annettu, iter()palauttaa iteraattorin, kunnes sentinel-merkkiä ei löydy.

Esimerkki 1: Python-iter (): n toiminta

 # 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'

Tuotos

 aeiou 

Esimerkki 2: mukautettujen objektien iter ()

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

Tuotos

 1 2 3 Seuranta (viimeisin puhelu viimeisin): Tiedosto "", rivi 23, Tiedostossa ", rivi 11, __next__ StopIteration 

Esimerkki 3: iter () sentinel-parametrilla

 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) 

Tuotos

 2 4 8

Tässä olemme toteuttaneet mukautettavan iteroitavan objektin ilman StopIterationehtoa.

Voimme kuitenkin käyttää iter()menetelmää sentinelparametrin kanssa iteroinnin lopettamiseksi. Jos palautettu arvo __next__()on yhtä suuri kuin sentinel, StopIterationkorotetaan, muuten arvo palautetaan.

Suositeltava lukeminen: Python Iterators

Mielenkiintoisia artikkeleita...