Python Academy · Урок

Итераторы и итерируемые объекты

Изучите протокол итераторов для создания собственного поведения при переборе

Урок 5 из 511 шагов

«Итераторы и итерируемые объекты» — бесплатный урок Python Academy на CoddyKit. Это урок 5 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 5 уроков всего.

Введение в итераторы и итерируемые объекты

Итераторы и итерируемые объекты — это основные понятия Python, которые позволяют работать с последовательностями данных. Они лежат в основе циклов, включений и генераторов.

В этом уроке вы узнаете, как работают итераторы и итерируемые объекты и как создавать собственные итераторы.

Итераторы и итерируемые объекты — иллюстрация 1

Что такое итерируемый объект

Итерируемый объект — это любой объект в Python, элементы которого можно перебирать с помощью цикла for. К таким объектам относятся списки, кортежи, множества и словари.

# Example of an iterable
my_list = [1, 2, 3]
for item in my_list:
    print(item)  # Outputs: 1, 2, 3

Что такое итератор

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

# Example of an iterator
my_list = [1, 2, 3]
iterator = iter(my_list)
print(next(iterator))  # Outputs: 1
print(next(iterator))  # Outputs: 2
print(next(iterator))  # Outputs: 3

Разница между итерируемыми объектами и итераторами

Итерируемые объекты можно перебирать, например списки, а итераторы выдают по одному элементу за раз с помощью метода next(). Итерируемый объект становится итератором, если передать его функции iter().

Создание пользовательских итераторов

Вы можете создать пользовательские итераторы, определив класс с методами __iter__() и __next__():

# Custom iterator example
class Counter:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current > self.end:
            raise StopIteration
        self.current += 1
        return self.current - 1

counter = Counter(1, 5)
for number in counter:
    print(number)  # Outputs: 1, 2, 3, 4, 5

Использование функции <code>iter()</code>

Функция iter() возвращает объект-итератор из итерируемого объекта:

# Using iter() on a list
my_list = [1, 2, 3]
iterator = iter(my_list)
print(next(iterator))  # Outputs: 1

Обработка <code>StopIteration</code>

Когда итератор исчерпан, он вызывает исключение StopIteration. Так Python сообщает о завершении последовательности.

# Handling StopIteration
my_list = [1, 2, 3]
iterator = iter(my_list)

while True:
    try:
        print(next(iterator))
    except StopIteration:
        break

Итераторы и генераторы

Генераторы позволяют проще создавать итераторы. Они автоматически реализуют методы __iter__() и __next__().

# Example of a generator as an iterator
def my_generator():
    yield 1
    yield 2
    yield 3

for value in my_generator():
    print(value)  # Outputs: 1, 2, 3

Распространённые ошибки при работе с итераторами

Вот некоторые ошибки, которых следует избегать:

  • Забывание реализовать __iter__() и __next__() в пользовательских итераторах.
  • Некорректная обработка исключений StopIteration.
  • Путаница между итераторами и итерируемыми объектами.

Что мы узнали

В этом уроке вы узнали:

  • О различии между итерируемыми объектами и итераторами.
  • Как использовать __iter__() и __next__() для создания пользовательских итераторов.
  • Как использовать функцию iter() и обрабатывать исключения StopIteration.
  • Как генераторы упрощают создание итераторов.

Отлично! Перейдём к следующей теме.

Итераторы и итерируемые объекты — иллюстрация 11
Можно начать бесплатно

Изучай Python с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
76
Уроки
320

Часто задаваемые вопросы

Урок «Итераторы и итерируемые объекты» бесплатный?

Да — полный текст урока «Итераторы и итерируемые объекты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 5 уроков всего.

Чему я научусь в уроке «Итераторы и итерируемые объекты»?

Изучите протокол итераторов для создания собственного поведения при переборе Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 5 из 5.

Сколько времени занимает урок «Итераторы и итерируемые объекты»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Декораторы
  2. Генераторы
  3. Менеджеры контекста (операторы with)
  4. Генераторы списков, множеств и словарей
  5. Итераторы и итерируемые объекты
← Назад к Python Academy