Почему в 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 

Ответы на вопрос(1)

Ваш ответ на вопрос