Skip to main content
 首页 » 编程设计

python之For 循环不会遍历所有对象

2025年05月04日12tuyile006

为什么这个 for 循环没有遍历所有项目:

 temp = 0 
 
 for br in my_list : 
    temp +=1 
    #other code here 
    #my list is not used at all, only br is used inside here 
    my_list.remove(br) 
 
 print temp 
 assert len(my_list) == 0 , "list should be empty" 

因此,断言触发。然后我添加了临时计数器,我确实看到尽管我的列表有 202 个元素,但 for 循环只处理其中的 101 个。这是为什么?

请您参考如下方法:

您不应该从正在迭代的列表中删除。如果你想删除东西,请使用它

while list: 
   item = list.pop() 
   #Do stuff 

编辑:如果您想了解更多关于 pop() 的信息,请查看 python doc

如果顺序很重要,请使用 pop(0)。 pop() 默认删除最后一项,如果你想按顺序遍历列表,你应该使用 pop(0) 删除第一个(索引 0)项并将其返回。

Edit2:感谢用户Vincent对于 while list 建议。