Функција Питхон итер () враћа итератор за дати објекат.
iter()
Функција креира објекат који се може поновљено једног елемента у датом тренутку.
Ови објекти су корисни у комбинацији са петљама попут фор лооп, вхиле лооп.
Синтакса iter()
функције је:
итер (објекат, сентинел)
итер () Параметри
iter()
Функција узима два параметра:
- објект - објекат чији итератор мора бити креиран (могу бити скупови, корице итд.)
- сентинел (опционално) - посебна вредност која се користи за представљање краја низа
Врати вредност из итер ()
iter()
Функција враћа итератор објекат за дати објекат.- Ако кориснички дефинисани објекат не имплементира
__iter__()
,__next__()
или__getitem()__
,TypeError
подиже се изузетак. - Ако је обезбеђен и параметар сентинел,
iter()
враћа итератор све док знак сентинел не буде пронађен.
Пример 1: Рад Питхон итер-а ()
# 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'
Оутпут
аеиоу
Пример 2: итер () за прилагођене објекте
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))
Оутпут
1 2 3 Трацебацк (последњи последњи позив): Датотека "", ред 23, у датотеци "", ред 11, у __нект__ СтопИтератион
Пример 3: итер () са параметром сентинел
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)
Оутпут
2 4 8
Овде смо применили прилагођени итерабилни објекат без StopIteration
услова.
Међутим, iter()
методу са sentinel
параметром можемо користити за заустављање итерације. Ако је вредност из које __next__()
је враћено једнако sentinel
, StopIteration
биће подигнута, у супротном, вредност ће бити враћена.
Препоручено читање: Питхон Итераторс