„Python iter“ () funkcija grąžina duoto objekto iteratorių.
iter()
Funkcija sukuria objektą, kuris gali būti pakartota vieną elementą vienu metu.
Šie objektai yra naudingi kartu su kilpomis, pvz., Kilpa, o kilpa.
iter()
Funkcijos sintaksė yra tokia:
iteris (objektas, sargybinis)
iter () parametrai
iter()
Funkcija trunka du parametrus:
- objektas - objektas, kurio iteratorių reikia sukurti (gali būti rinkiniai, rinkiniai ir kt.)
- sentinel (neprivaloma) - speciali vertė, naudojama sekos pabaigai žymėti
Grąžinimo vertė iš iter ()
iter()
Funkcija grąžina iteratorių objektą tikroje objekto.- Jei vartotojas apibrėžtas objektas neįgyvendina
__iter__()
ir__next__()
ar__getitem()__
, TheTypeError
išimtis yra pakelta. - Jei taip pat pateikiamas „sentinel“ parametras,
iter()
grąžina iteratorių, kol sargybinio simbolis nerastas.
1 pavyzdys: „Python iter“ () darbas
# 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'
Rezultatas
aeiou
2 pavyzdys: pasirinktinių objektų iter ()
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))
Rezultatas
1 2 3 „Traceback“ (paskutinis paskutinis skambutis paskutinis): Failo „“, 23 eilutė, faile „“, 11 eilutė, __next__ StopIteration
3 pavyzdys: iter () su sentinel parametru
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)
Rezultatas
2 4 8
Čia mes įdiegėme pasirinktinį kartojamą objektą be StopIteration
sąlygos.
Tačiau pakartojimui sustabdyti galime naudoti iter()
metodą su sentinel
parametru. Jei grąžinta vertė __next__()
yra lygi sentinel
, StopIteration
bus padidinta, kitaip vertė bus grąžinta.
Rekomenduojamas skaitymas: „ Python Iterators“