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()__
,TypeError
vyvolá 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 StopIteration
podmienky.
Na zastavenie iterácie však môžeme použiť iter()
metódu s sentinel
parametrom. Ak sa hodnota vrátená z __next__()
rovná sentinel
, StopIteration
zvýši sa, inak sa vráti.
Odporúčané čítanie: Iterátory Pythonu