【发布时间】:2021-10-28 19:16:47
【问题描述】:
我想知道 Python 中的 for 循环如何处理迭代。对于内存中存在的固定迭代,Python 只需使用循环对其进行迭代,例如:
x=[1,2,3,4,5]
for i in x:
print(i)
但是假设我们使用函数生成可迭代对象,例如:
for i in sorted(x):
print(i)
在这种情况下,可迭代对象是第一次计算,然后缓存以供后续迭代使用吗?还是每次迭代都重新计算?
当然,后者似乎真的非常低效,因此它可能以前一种方式实现。但是,我找不到任何文件来支持这种说法,所以如果有人能分享,那就太棒了!
【问题讨论】:
-
既然你意识到这将是“真的非常低效”,那么运行一个实验怎么样?不会替换文档,但仍然...
-
或者甚至在计算中加入一个副作用,比如打印一些东西。