Как в цикле вывести поочередно элементы списка бесконечное количество раз?

Мне нужно чтобы через каждые 10 минут программа выводила мне один элемент из списка поочередно, но потом, когда программа дойдет до конца списка, начала опять перечислять элементы по новой.

Как мне это сделать?

Примерный код:

import time
import schedule
spisok = [1,2,3]

while True:
    def idi():
        for i in spisok:
            print(i)

    schedule.every(10).minutes.do(idi)
    
    while True:    
        schedule.run_pending()
        time.sleep(1)

Ответы (2 шт):

Автор решения: MaxU

Воспользуйтесь itertools.cycle:

import time
import schedule
from itertools import cycle

spisok = [1,2,3]

iterator = cycle(spisok)

while True:
    def idi(iterator=iterator):
        print(next(iterator))

    schedule.every(10).minutes.do(idi)

Пример работы cycle:

In [71]: iterator = cycle(spisok)

In [72]: [next(iterator) for _ in range(17)]
Out[72]: [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2]
→ Ссылка
Автор решения: extrn

Как вариант

import itertools
import schedule
import time

data = [1,2,3]
schedule.every(10).minutes.do(next, map(print, itertools.cycle(data)))

while True:
    schedule.run_pending()
    time.sleep(1)
→ Ссылка