Что такое итератор в Python · Python Backend — JobPilot

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

Python Backend · 24%
Вопрос 2470 / #
Пример ответа

Коротко: В Python итератор — это объект, который реализует протокол итерации, позволяя последовательно получать элементы из коллекции или потока данных.

Ключевые идеи:
  • Итератор должен иметь метод __next__, который возвращает следующий элемент или вызывает StopIteration
  • Итератор также реализует метод __iter__, возвращающий сам себя, что делает его итерируемым
  • Встроенные функции, такие как iter() и next(), работают с итераторами для обхода данных
Пример: Например, при вызове iter([1, 2, 3]) возвращается итератор списка, и каждый вызов next() возвращает 1, 2, 3, а затем StopIteration.
Пример реализации пользовательского итератора для генерации чисел Фибоначчи
python
class FibonacciIterator:
    def __init__(self, limit):
        self.limit = limit
        self.a, self.b = 0, 1
        self.count = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.count >= self.limit:
            raise StopIteration
        result = self.a
        self.a, self.b = self.b, self.a + self.b
        self.count += 1
        return result

# Использование
fib_iter = FibonacciIterator(5)
for num in fib_iter:
    print(num)  # Вывод: 0, 1, 1, 2, 3
Вопросы для интервьюера:
  • Чем итератор отличается от итерируемого объекта?Итерируемый объект имеет метод __iter__, возвращающий итератор, а итератор добавляет метод __next__ для последовательного доступа.
  • Как вы используете итераторы в реальных проектах на Python?Я применяю их для обработки больших данных потоково, например, при чтении файлов построчно или работе с базами данных через курсоры.
Практический совет (на неделю):
  1. Практикуйтесь в создании собственных итераторов для понимания протокола, начиная с простых случаев, как в примере выше.
  2. Используйте генераторы (yield) как более простую альтернативу итераторам для ленивых вычислений в продакшене.
Python Backend
Общий
24%
Навигация
Какие знаешь типы данных в Python
Следующий: С какими БД работал
Предыдущий: Какие знаешь типы данных в Python

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.