首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我在循环中从列表中删除项时,Python做了什么?

当我在循环中从列表中删除项时,Python做了什么?
EN

Stack Overflow用户
提问于 2014-03-15 17:03:34
回答 1查看 52关注 0票数 0

我做到了

代码语言:javascript
复制
    a = range(17,30)
    print(a)
    for i, item in enumerate(a):
        if (item%3)==0:
            print("del {0}:{1}".format(i, item))
            del a[i]
    print(a)

然后我得到了,

代码语言:javascript
复制
[17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
del 1:18
del 3:21
del 5:24
del 7:27

答案是正确的,但我想删除项目的索引应该是1,4,7,10。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-15 17:08:25

所发生的情况是,您正在删除列表a的项,因此索引会发生变化。如果在循环中打印列表a,您可以很容易地看到这一点:

代码语言:javascript
复制
a = range(17, 30)

for i, item in enumerate(a):
    if (item % 3) == 0:
        print(a)
        print("del  {0}:{1}".format(i, item))
        del a[i]

输出:

代码语言:javascript
复制
  0   1   2   3   4   5   6   7   8   9  10  11  12
-----------------------------------------------------
[17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
del  1:18
[17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
del  3:21
[17, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29]
del  5:24
[17, 19, 20, 22, 23, 25, 26, 27, 28, 29]
del  7:27
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22426925

复制
相关文章

相似问题

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