您将删除循环每次迭代中的第一个元素del a[0]
,因此迭代器分 3 步清空,因为它会移动到您在下一次迭代中删除的元素之后的元素。
您可以在下面的代码中检查迭代器当前所在的元素以及列表状态
a = [1, 2, 3, 4, 5, 6]
for elem in a:
print(elem)
del a[0]
print(a)
输出是
1
[2, 3, 4, 5, 6]
3
[3, 4, 5, 6]
5
[4, 5, 6]
你可以把它想象成一个指向列表第一个元素的指针,当你在每次迭代中删除第一个元素时,该指针会跳转2步,并且对于6个元素它只能跳转3次。
一般来说,修改正在迭代的同一个列表是一个坏主意。
但如果你真的想要,你可以迭代列表的副本a[:]
如果您确实想删除项目
a = [1, 2, 3, 4, 5, 6]
for elem in a[:]:
del a[0]
print(a)
输出是
[2, 3, 4, 5, 6]
[3, 4, 5, 6]
[4, 5, 6]
[5, 6]
[6]
[]