我的问题很简单。
Does a for
循环评估它每次使用的参数?
Such as:
for i in range(300):
python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表?
如果是的话,这是避免这种情况的方法吗?
lst = range(300)
for i in lst:
#loop body
像这样的代码示例也是如此。
for i in reversed(lst):
for k in range(len(lst)):
是每次都应用相反的过程,还是每次迭代时计算长度? (我对 python2 和 python3 都要求这个)
如果不是,Python 在迭代可迭代对象时如何评估它的变化?
不用担心,迭代器只会被评估一次。它最终大致相当于这样的代码:
it = iter(range(300))
while True:
try:
i = next(it)
except StopIteration:
break
... body of loop ...
请注意,这不是quite等价,因为break
会有不同的工作方式。请记住,您可以添加else
to a for
循环,但这在上面的代码中不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)