Python iter ()

Функция Python iter () возвращает итератор для данного объекта.

iter()Функция создает объект , который может повторяться один элемент за один раз.

Эти объекты полезны в сочетании с циклами, такими как цикл for и while.

Синтаксис iter()функции:

 iter (объект, дозорный)

iter () Параметры

iter()Функция принимает два параметра:

  • объект - объект, итератор которого необходимо создать (могут быть множества, кортежи и т. д.)
  • sentinel (необязательно) - специальное значение, которое используется для представления конца последовательности

Возвращаемое значение из iter ()

  • iter()Функция возвращает объект итератора для данного объекта.
  • Если определяемый пользователем объект не реализует __iter__(), __next__()или __getitem()__, TypeErrorвозникает исключение.
  • Если также указан дозорный параметр, iter()возвращает итератор до тех пор, пока дозорный символ не будет найден.

Пример 1: Работа 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'

Вывод

 aeiou 

Пример 2: 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))

Вывод

 1 2 3 Отслеживание (последний вызов последним): файл "", строка 23, в файле "", строка 11, в __next__ StopIteration 

Пример 3: iter () с параметром дозорного

 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будет увеличено, в противном случае значение будет возвращено.

Рекомендуемая литература: Итераторы Python

Интересные статьи...