Python iter ()

Функція Python iter () повертає ітератор для даного об'єкта.

iter()Функція створює об'єкт , який може повторюватися один елемент за один раз.

Ці об'єкти корисні в поєднанні з циклами, як цикл for, цикл while.

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

 iter (об'єкт, сторожовий)

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

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

  • об'єкт - об'єкт, ітератор якого повинен бути створений (це можуть бути набори, кортежі тощо)
  • сторожовий (необов’язково) - спеціальне значення, яке використовується для представлення кінця послідовності

Повернене значення з 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 Traceback (останній дзвінок останній): Файл "", рядок 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

Цікаві статті...