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 aTypeError
kivé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 StopIteration
feltétel nélkül testreszabható objektumot .
Használhatjuk azonban a iter()
metódust a sentinel
paraméterrel az iteráció leállításához. Ha a visszatérő érték __next__()
megegyezik a (z) értékkel sentinel
, StopIteration
akkor emelésre kerül, ellenkező esetben az érték visszatér.
Ajánlott irodalom: Python Iterators