为什么使用最大内存的itertools.cycle()函数?

问题描述 投票:-2回答:1

我现在正在学习python中的itertools模块。在学习的时候我才知道itertools.cycle()函数。

在我的python3.7 IDLE中,我尝试了list(itertools.cycle([1,2,3]))语句。按Enter键后,我的笔记本电脑的ram被大量消耗。令人惊讶的是它使用了我的笔记本电脑的最大ram。为什么会这样?

python itertools
1个回答
3
投票

list(cycle([1,2,3]))的调用等效于

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

循环永远不会终止,因为cycle对象always有下一个要产生的元素,所以lst无限期增长,仅在计算机用尽内存以分配给列表时才停止。

© www.soinside.com 2019 - 2024. All rights reserved.