все Python 3itertoolsфункция
itertools.cycle
itertools
Бесконечно повторяет элементы итерируемого по кругу.
Синтаксис
itertools.cycle(iterable)
На первом проходе cycle сохраняет копию всех элементов, чтобы потом повторять их бесконечно, — поэтому на огромном или бесконечном источнике он незаметно съест память. Сам итератор никогда не заканчивается: list(cycle(...)) зависнет навсегда, всегда ограничивай его через islice или через next() в цикле с собственным условием выхода.
Примеры
import itertools
c = itertools.cycle([1, 2, 3])
print([next(c) for _ in range(5)]) # → [1, 2, 3, 1, 2]
print(list(itertools.islice(itertools.cycle('ab'), 5))) # → ['a', 'b', 'a', 'b', 'a']
print(list(zip('abcd', itertools.cycle([0, 1])))) # → [('a', 0), ('b', 1), ('c', 0), ('d', 1)]
print(list(itertools.islice(itertools.cycle([]), 3))) # → []
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности