Проверяет понимание базовой модели обхода данных в Python и того, какие объекты можно перебирать в цикле.
Итерируемый объект — это объект, который можно перебирать по элементам, например в цикле for. Такие объекты реализуют метод __iter__() или поддерживают протокол последовательности. Примеры: список, строка, словарь, множество. При начале перебора Python получает из него итератор и работает уже с ним.
Итерируемый объект — это объект, из которого можно последовательно получать элементы. Это фундаментальная концепция, лежащая в основе циклов, генераторов и многих встроенных функций.
Объект считается итерируемым, если выполняется одно из условий:
Реализован метод __iter__(), который возвращает итератор
Реализован метод __getitem__() с доступом по индексам, начиная с нуля
Пример стандартного итерируемого объекта:
numbers = [1, 2, 3]
for n in numbers:
print(n)
Здесь список — итерируемый объект.
Когда выполняется цикл for, происходит следующее:
Вызывается iter(numbers)
Получается итератор
Итератор возвращает элементы по одному
class MyCollection:
def __init__(self):
self.data = [1, 2, 3]
def __iter__(self):
return iter(self.data)
Теперь объект можно использовать в цикле.
Итерируемость используется:
в циклах for
в comprehension
в функциях sum(), any(), all()
при распаковке
Итерируемый объект — это источник данных для последовательного обхода. Почти все коллекции в Python реализуют этот протокол, поэтому понимание этой концепции необходимо для работы с языком.