Я не такой большой поклонник импорта модулей, когда вы можете сделать что-то самостоятельно в несколько строк. Вот мое решение без импорта:
def cycle(my_list, start_at=None):
start_at = 0 if start_at is None else my_list.index(start_at)
while True:
yield my_list[start_at]
start_at = (start_at + 1) % len(my_list)
Это вернет (бесконечный) итератор, зацикливающий ваш список. Чтобы получить следующий элемент в цикле, вы должны использовать оператор next
:
>>> it1 = cycle([101,102,103,104])
>>> next(it1), next(it1), next(it1), next(it1), next(it1)
(101, 102, 103, 104, 101) # and so on ...
>>> it1 = cycle([101,102,103,104], start_at=103)
>>> next(it1), next(it1), next(it1), next(it1), next(it1)
(103, 104, 101, 102, 103) # and so on ...