Почему функция itertools.cycle () использует максимальное значение оперативной памяти? - PullRequest
0 голосов
/ 18 марта 2020

Сейчас я изучаю модуль itertools в python. Во время обучения я узнал itertools.cycle() функцию.

В моем python3 .7 IDLE я попытался list(itertools.cycle([1,2,3])) утверждение. После нажатия введите Кнопка ОЗУ моего ноутбука сильно потребляется. Удивительно, но он использовал максимальный ОЗУ моего ноутбука. Почему это происходит?

1 Ответ

3 голосов
/ 18 марта 2020

Вызов list(cycle([1,2,3])) эквивалентен

lst = []
for x in cycle([1,2,3]):
    lst.append(x)

l oop никогда не завершается, потому что у cycle объекта всегда есть следующий элемент для выдачи, поэтому lst растет бесконечно, останавливаясь только тогда, когда вашей машине не хватает памяти для выделения в списке.

...