Назад к вопросам
Junior
344
questionbank

Какие итераторы вы знаете?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Python итератор — это объект, который реализует методы __iter__() и __next__(). Метод __iter__() возвращает сам объект-итератор, а __next__() возвращает следующий элемент последовательности. Когда элементы заканчиваются, __next__() вызывает исключение StopIteration.

Из встроенных типов данных и функций, которые возвращают итераторы, можно выделить:

  • Списки (list)
  • Кортежи (tuple)
  • Строки (str)
  • Множества (set)
  • Словари (dict) (по умолчанию итерируются по ключам)
  • Итераторы, создаваемые генераторными выражениями или функциями-генераторами.
  • Функции range(), enumerate(), zip(), map(), filter().

Примеры:

# Итератор из списка
my_list = [1, 2, 3]
list_iterator = iter(my_list)

# Итератор из строки
my_string = "abc"
string_iterator = iter(my_string)

# Итератор из диапазона
range_iterator = range(5) # range() уже возвращает итератор

# Итератор из генераторного выражения
gen_expr_iterator = (x**2 for x in range(5))

# Итератор из функции enumerate
enumerate_iterator = enumerate(['a', 'b', 'c'])

# Итератор из функции zip
zip_iterator = zip([1, 2], ['a', 'b'])

Можно создать свои собственные итераторы, реализовав соответствующие методы.

class MyIterator:
    def __init__(self, limit):
        self.limit = limit
        self.current = 0

    def __iter__(self):
        return self # Метод возвращает сам объект

    def __next__(self):
        if self.current < self.limit:
            value = self.current
            self.current += 1
            return value
        else:
            raise StopIteration # Вызываем исключение при окончании итерации

# Использование пользовательского итератора
custom_iterator = MyIterator(3)

# Пример итерации
for item in custom_iterator:
    print(item)
# Вывод:
# 0
# 1
# 2