列表遍历和删除

我认为以下代码将打印七个2并生成列表li
没有2.
奇怪的是,它仅打印四个2.如果您更改2的数量
列表,结果都超出了预期.
我知道实现预期目标的另一种方法,但是为什么
发生了?有人可以启发我吗?
li = [2,2,2,2,2,2,2,3,4,5,6,7,8,9]
对于li中的x:
如果x == 2:
打印x
li.remove(x)

# 回答1


在1月31日,7:49*am," digisat ...@gmail.com"
写道:
只是有一个主题:http://groups.google.com/group/comphaaa46e72a/
- -
Arnaud
# 回答2


在2008年1月30日星期三23:49:46 -0800,dixephyde******@gmail.com写道:
请勿同时修改列表.
如果您查看档案(例如,在Google组上或任何数量的档案
其他地方),该主题刚刚昨天和今天早些时候讨论.
请参阅主题行的线程:
"从列表中删除元素时会导致下一个元素
被跳过"
至于为什么会发生……您的代码看起来像这样:
对于li中的x:
如果x == 2:
打印x
li.remove(x)
考虑到"引擎盖下",弗卢普看起来像这样:
i = 0
当我<列表的长度时:
设置x等于第i-th容量中的项目
执行代码的循环块
i += 1
如果您开始在循环的中间删除或插入项目,则
索引不会指向您期望的位置.
- -
史蒂文
# 回答3


非常感谢您的出色表现.你们节省我的睡眠
今天.

标签: python

添加新评论