Итераторы в Python — это ключевой элемент, который позволяет пройтись по элементам коллекции (списка, кортежа, словаря и т.д.) без необходимости использования индексов или циклов. Впрочем, иногда возникает необходимость создать свой собственный итератор. Например, если нужно перебирать элементы в определенном, нестандартном порядке или с определенными дополнительными действиями при каждом переходе к следующему элементу.
Рассмотрим, как создать базовый итератор в Python на примере итератора, который проходит по всем четным числам в заданном диапазоне.
class EvenNumbers:
def __init__(self, max):
self.max = max
self.num = 0
def __iter__(self):
return self
def __next__(self):
if self.num >= self.max:
raise StopIteration
else:
self.num += 2
return self.num - 2
В этом коде создается класс EvenNumbers, который представляет собой итератор. Этот итератор начинает с нуля и продвигается через все четные числа, пока не достигнет заданного максимума.
В этом классе есть три метода:
__init__— инициализирует итератор, устанавливая максимальное значение и начальное число;__iter__— возвращает итератор. В данном случае, это сам объект;__next__— возвращает следующее значение в последовательности. Если итератор достигнет максимального значения, он вызовет исключениеStopIteration, что сигнализирует о завершении итерации.
Теперь этот итератор можно использовать как любой другой итератор в Python:
for i in EvenNumbers(10):
print(i)
На выходе получим:
0 2 4 6 8
Таким образом, создание собственного итератора в Python — это весьма прямолинейный процесс. Важно помнить о необходимости реализовать методы __iter__ и __next__, а также об обработке исключения StopIteration.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий