a = [1,2,3,4,5]
for i in range(len(a)):
a.pop(0)
print ('%d/%d' % (i, len(a)))上面是迭代过程中简单的代码更改列表大小。
$ python test.py
0/4
1/3
2/2
3/1
4/0结果如下所示。
在2/2中,i超过了总迭代大小!
问题
有人能告诉我为什么代码在超过这个大小之后还会执行吗?
发布于 2022-02-08 02:31:38
嗯..。为了更简单的解释,这里发生的事情是
当您运行for i in range(len(a)):时
它将自动运行for i in range(5):
因此,它不会对每个循环一次又一次地调用len函数。
这是另一个例子:
length=5
for i in range(length):
length=2
print(length)结果是
2
2
2
2
2如果我错了,请纠正我,但我认为大多数for迭代(任何语言)都是从一开始就固定的,如果您想循环一些不固定的东西,最好在
length=5
i=0
while i < length:
length=2
print(length)
i+=1结果
2
2https://stackoverflow.com/questions/71027880
复制相似问题