Roc*_*lly 4 python for-loop python-2.7 python-3.x
我的问题非常简单.
for
循环是否评估它每次使用的参数?
如:
for i in range(300):
Run Code Online (Sandbox Code Playgroud)
python是否为此循环的每次迭代创建了300个项目的列表?
如果是,这是一种避免它的方法吗?
lst = range(300)
for i in lst:
#loop body
Run Code Online (Sandbox Code Playgroud)
对于像这样的代码示例也是如此.
for i in reversed(lst):
for k in range(len(lst)):
Run Code Online (Sandbox Code Playgroud)
是每次都应用反向过程,还是每次迭代计算的长度?(我问这个python2和python3)
如果没有,Python如何在迭代迭代时评估迭代的变化?
没有恐惧,迭代器只会被评估一次.它最终大致相当于这样的代码:
it = iter(range(300))
while True:
try:
i = next(it)
except StopIteration:
break
... body of loop ...
Run Code Online (Sandbox Code Playgroud)
请注意,它并不完全等效,因为它的break
工作方式不同.请记住,你可以将添加else
到一个for
循环,但不会在上面的代码工作.
归档时间: |
|
查看次数: |
529 次 |
最近记录: |