Назад к вопросам
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__() |
| Действие | Возвращает итератор | Возвращает следующий элемент |
| Состояние | Содержит данные | Содержит текущее положение |
| Возобновляемость | Можно получить несколько итераторов | Однократное использование |