Python iter ()

A Python iter () függvény iterátort ad vissza az adott objektumhoz.

A iter()függvény létrehoz egy objektumot, amely egyszerre egy elemet tartalmazhat.

Ezek az objektumok akkor hasznosak, ha olyan hurokkal vannak összekötve, mint például a hurok, míg a hurok esetében.

A iter()függvény szintaxisa :

 iter (objektum, őrszem)

iter () Paraméterek

A iter()függvénynek két paramétere van:

  • objektum - objektum, amelynek iterátorát létre kell hozni (lehetnek halmazok, sorok stb.)
  • sentinel (opcionális) - speciális érték, amely a szekvencia végét jelenti

Visszatérési érték iterből ()

  • A iter()függvény egy iterátor objektumot ad vissza az adott objektumhoz.
  • Ha a felhasználó által definiált objektum nem valósul meg __iter__(), és __next__()vagy __getitem()__, akkor a TypeErrorkivétel felmerül.
  • Ha az sentinel paraméter is meg van adva, akkor iter()visszaad egy iterátort, amíg az sentinel karakter nem található.

1. példa: A Python iter () működése

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

Kimenet

 aeiou 

2. példa: iter () egyéni objektumokhoz

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

Kimenet

 1 2 3 Traceback (a legutóbbi hívás utoljára): "" fájl, 23. sor, a "" fájlban, 11. sor, __next__ StopIteration 

3. példa: iter () sentinel paraméterrel

 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) 

Kimenet

 2 4 8

Itt megvalósítottunk egy StopIterationfeltétel nélkül testreszabható objektumot .

Használhatjuk azonban a iter()metódust a sentinelparaméterrel az iteráció leállításához. Ha a visszatérő érték __next__()megegyezik a (z) értékkel sentinel, StopIterationakkor emelésre kerül, ellenkező esetben az érték visszatér.

Ajánlott irodalom: Python Iterators

érdekes cikkek...