Как получать элементы из списка, как-будто он бесконечный? Но без зацикливания?

В одном из прошлых вопросов мы рассмотрели, как в Python сделать список «бесконечным». Но прошлый пример был бесполезный, потому что давал зацикливание. Поэтому новый вопрос — продолжение: как сделать, чтобы можно было брать элементы из списка столько, сколько нужно, но без зацикливания? Дает зацикливание: Нужен правильный ответ.