Python 是否忽略第二个元素?

Python 是否忽略第二个元素?,python,Python,我有一个非常奇怪的错误,我看不出哪里出了问题。我想在对象列表上循环 objects = [<object 1>, <object 2>, <object 3>, <object 4>, <Query_Category 5>, <object 6>] 输出是 delete <Query_Category 1> delete <Query_Category 3> delete <Quer

我有一个非常奇怪的错误,我看不出哪里出了问题。我想在对象列表上循环

objects =  [<object 1>, <object 2>, <object 3>, <object 4>, <Query_Category 5>, <object 6>] 
输出是

delete  <Query_Category 1>
delete  <Query_Category 3>
delete  <Query_Category 4>
delete  <Query_Category 5>
delete  <Query_Category 6>
删除
删除
删除
删除
删除
那么循环忽略了第二个元素?这个结果是可重复的,这意味着如果我再次运行它,它会导致相同的结果??? 这对您来说可能是不可复制的,因为我猜这是由我的代码中的一些奇怪的东西引起的???但我不知道该找什么? 这里有我缺少的基本python原则吗? 谢谢
carl

不要修改循环中迭代的容器。由于pop操作,您的容器发生了更改,因此对它的迭代失败(跳过一个元素)

如果您只想在集合上迭代并在最后销毁它,请从集合中弹出,直到它不是空的

a = range(10)

while len(a):
  print a.pop(0)
给予

正如所料

你的情况就是这样

while len(objects):
    object = objects.pop(0)
    print "delete ", object

修改您正在迭代的对象几乎从来都不是一个好主意。你想用这个做什么?
0
1
2
3
4
5
6
7
8
9
while len(objects):
    object = objects.pop(0)
    print "delete ", object