Python iter ()

Funkcia Python iter () vráti iterátor pre daný objekt.

iter()Funkcia vytvorí objekt, ktorý môže byť opakovaná jeden prvok naraz.

Tieto objekty sú užitočné, keď sú spojené so slučkami ako for loop, while loop.

Syntax iter()funkcie je:

 iter (objekt, sentinel)

parametre iter ()

iter()Funkcia má dva parametre:

  • objekt - objekt, ktorého iterátor musí byť vytvorený (môžu to byť množiny, n-tice atď.)
  • sentinel (voliteľné) - špeciálna hodnota, ktorá sa používa na predstavenie konca sekvencie

Vrátiť hodnotu z iter ()

  • iter()Funkcia vracia objekt Iterator pre daný objekt.
  • Ak objekt definovaný používateľom neimplementuje __iter__()a __next__()alebo __getitem()__, TypeErrorvyvolá sa výnimka.
  • Ak je poskytnutý aj parameter sentinel, iter()vráti iterátor, kým sa nenájde znak sentinel.

Príklad 1: Práca s 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'

Výkon

 aeiou 

Príklad 2: iter () pre vlastné objekty

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

Výkon

 1 2 3 Traceback (posledný posledný hovor): súbor „“, riadok 23, v súbore „“, riadok 11, v __next__ StopIteration 

Príklad 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) 

Výkon

 2 4 8

Tu sme implementovali prispôsobiteľný iterovateľný objekt bez StopIterationpodmienky.

Na zastavenie iterácie však môžeme použiť iter()metódu s sentinelparametrom. Ak sa hodnota vrátená z __next__()rovná sentinel, StopIterationzvýši sa, inak sa vráti.

Odporúčané čítanie: Iterátory Pythonu

Zaujímavé články...