首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在迭代期间更改python列表大小。这样可以吗?

在迭代期间更改python列表大小。这样可以吗?
EN

Stack Overflow用户
提问于 2022-02-08 02:25:52
回答 1查看 604关注 0票数 1
代码语言:javascript
复制
a = [1,2,3,4,5]

for i in range(len(a)): 
    a.pop(0)
    print ('%d/%d' % (i, len(a)))

上面是迭代过程中简单的代码更改列表大小。

代码语言:javascript
复制
$ python test.py
0/4
1/3
2/2
3/1
4/0

结果如下所示。

2/2中,i超过了总迭代大小!

问题

有人能告诉我为什么代码在超过这个大小之后还会执行吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-08 02:31:38

嗯..。为了更简单的解释,这里发生的事情是

当您运行for i in range(len(a)):

它将自动运行for i in range(5):

因此,它不会对每个循环一次又一次地调用len函数。

这是另一个例子:

代码语言:javascript
复制
length=5
for i in range(length):
    length=2
    print(length)

结果是

代码语言:javascript
复制
2
2
2
2
2

如果我错了,请纠正我,但我认为大多数for迭代(任何语言)都是从一开始就固定的,如果您想循环一些不固定的东西,最好在

代码语言:javascript
复制
length=5
i=0
while i < length:
    length=2
    print(length)
    i+=1

结果

代码语言:javascript
复制
2
2
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71027880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档