Создать итератор из кортежа

Для готового кортежа достаточно iterator = iter(values). Он возвращает элементы по очереди через next() и после последнего поднимает StopIteration; сам кортеж при этом не изменяется.

Короткий ответ

Что ответить на собеседовании

Для готового кортежа достаточно iterator = iter(values). Он возвращает элементы по очереди через next() и после последнего поднимает StopIteration; сам кортеж при этом не изменяется.

Подробный разбор

Ответ с пояснениями

Условие

Дан кортеж. Необходимо реализовать объект‑итератор, который позволит последовательно проходить по элементам этого кортежа.

Ответ

Для готового кортежа достаточно iterator = iter(values). Он возвращает элементы по очереди через next() и после последнего поднимает StopIteration; сам кортеж при этом не изменяется.

Если требуется собственный класс, реализуйте протокол:

class TupleIterator:
    def __init__(self, values):
        self.values = values
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.values):
            raise StopIteration
        value = self.values[self.index]
        self.index += 1
        return value

Каждый экземпляр имеет свой курсор. iter(iterator) возвращает тот же объект и не начинает обход заново. Для нового обхода нужен новый итератор. Пустой кортеж сразу исчерпан.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее