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

В чем отличие между итератором и итерируемым объектом?

Sobes Copilot

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

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

sobes.tech AI

Итерируемый объект — это объект, от которого можно получить итератор. Он реализует метод __iter__(), который возвращает итератор.

Итератор — это объект, который предоставляет доступ к элементам коллекции по одному за раз. Он реализует методы __iter__() и __next__(). Метод __next__() возвращает следующий элемент итерации или вызывает исключение StopIteration при их исчерпании.

# Пример итерируемого объекта (списка)
my_list = [1, 2, 3]

# Получение итератора из итерируемого объекта
my_iterator = iter(my_list) # Вызывает my_list.__iter__()

# Использование итератора для получения элементов
print(next(my_iterator)) # Вызывает my_iterator.__next__()
print(next(my_iterator))
print(next(my_iterator))

# При попытке получить следующий элемент после исчерпания
try:
    print(next(my_iterator))
except StopIteration:
    print("Итерация завершена")

Ключевое отличие: итерируемый объект предоставляет итератор, а итератор предоставляет элементы.

Сравнение:

Характеристика Итерируемый объект Итератор
Реализует метод __iter__() __iter__(), __next__()
Действие Возвращает итератор Возвращает следующий элемент
Состояние Содержит данные Содержит текущее положение
Возобновляемость Можно получить несколько итераторов Однократное использование