В Python итераторы часто используются по одной простой причине. Они позволяют вам проходить структуры данных, не зная, насколько эти структуры велики и как реализованы. Вы даже можете пройти по данным, которые были созданы во время работы программы, что позволяет обработать потоки данных, которые в противном случае не поместились бы в память компьютера.
Вполне возможно пройти по последовательности таким образом:
>>>> rabbits = ['Flopsy', 'Mopsy', 'Cottontail', 'Peter']
>>>> current = 0
>>>> while current < len(rabbits):
>…·····print(rabbits[current])
>…·····current += 1
>…
>Flopsy
>Mopsy
>Cottontail
>Peter
Однако существует более характерный для Python способ решения этой задачи:
>>>> for rabbit in rabbits:
>…·····print(rabbit)
>…
>Flopsy
>Mopsy
>Cottontail
>Peter
Списки вроде rabbits являются одними из итерабельных объектов в Python наряду со строками, кортежами, словарями и некоторыми другими элементами. Итерирование по кортежу или списку возвращает один элемент за раз. Итерирование по строке возвращает один символ за раз, как показано здесь:
>>>> word = 'cat'
>>>> for letter in word:
>…·····print(letter)
>…
>c
>a
>t
Итерирование по словарю (или его функции keys()) возвращает ключи. В этом примере ключи являются типами карт в настольной игре Clue (за пределами Северной Америки она называется CluedoAmerica):