Как в цикле вывести поочередно элементы списка бесконечное количество раз?
Мне нужно чтобы через каждые 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)