Почему в Python itertools.cycle нужно создавать копию итерируемого?
Документация для Python'аs itertools.cycle () дает реализацию псевдокода в виде:
def cycle(iterable):
# cycle('ABCD') --> A B C D A B C D A B C D ...
saved = []
for element in iterable:
yield element
saved.append(element)
while saved:
for element in saved:
yield element
Ниже говорится:Обратите внимание, что этот элемент инструментария может потребовать значительного вспомогательного хранения (в зависимости от длины итерируемого). "
Я в основном шел по этому пути, за исключением того, что я сделал это, что не требует создания копии итерируемого:
def loop(iterable):
it = iterable.__iter__()
while True:
try:
yield it.next()
except StopIteration:
it = iterable.__iter__()
yield it.next()
x = {1, 2, 3}
hard_limit = 6
for i in loop(x):
if hard_limit