为什么这个 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 建议。
