Python iter ()

Funkce Python iter () vrací iterátor pro daný objekt.

iter()Funkce vytvoří objekt, který může být opakována jeden prvek najednou.

Tyto objekty jsou užitečné, když jsou spojeny se smyčkami jako smyčka for, while.

Syntaxe iter()funkce je:

 iter (objekt, hlídka)

iter () parametry

iter()Funkce má dva parametry:

  • objekt - objekt, jehož iterátor musí být vytvořen (mohou to být množiny, n-tice atd.)
  • sentinel (volitelné) - speciální hodnota, která se používá k reprezentaci konce sekvence

Vrátit hodnotu z iter ()

  • iter()Funkce vrací objekt iterátoru pro daný objekt.
  • Pokud uživatelsky definovaný objekt neimplementuje __iter__(), __next__()nebo __getitem()__se TypeErrorvyvolá výjimka.
  • Pokud je zadán i parametr sentinel, iter()vrátí iterátor, dokud znak sentinel nebude nalezen.

Příklad 1: Práce 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ýstup

 aeiou 

Příklad 2: iter () pro 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ýstup

 1 2 3 Traceback (poslední hovor poslední): Soubor "", řádek 23, v souboru "", řádek 11, v __next__ StopIteration 

Příklad 3: iter () s parametrem 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ýstup

 2 4 8

Zde jsme implementovali vlastní iterovatelný objekt bez StopIterationpodmínky.

Můžeme však použít iter()metodu s sentinelparametrem k zastavení iterace. Pokud se hodnota vrácená z __next__()rovná sentinel, StopIterationbude vyvolána, v opačném případě bude vrácena hodnota.

Doporučená literatura: Pythonové iterátory

Zajímavé články...