Функція 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