Следующее использование itertools
обеспечит генератор, который должен удовлетворять требованиям - просто измените аргументы range(a, b)
для изменения вывода:
from itertools import cycle, chain
r = range(10)
r_reversed = reversed(r[1:-1])
gen = cycle(chain(r, r_reversed))
Вывод:
>>> from itertools import islice
>>> list(islice(gen, 20))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1]
Чтобы начать с произвольного целого числа, используйте аргумент start
для islice
следующим образом:
>>> list(islice(gen, 4, 20))
[4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1]