list3 = [1, 2, 3, 4, 5, 6, 7, 8]
# [2, 3, 4, 5, 6, 7, 8]
# [2, 4, 5, 6, 7, 8]
for i in range(0, len(list3)):
if list3[i] < 5:
list3.pop(i)
print(list3)
首先判断1<5,将1删除,之后列表变成[2,3,4,5,6,7,8],即且数据整体向前迁移一位
之后判断的不是2,而是3,3< 5将3删除,之后列表变成[2,4,5,6,7,8]
之后判断的不是4,而是5,5=5,不删除,输出5
又如:
list3 = [1, 2, 3, 4, 5, 6, 7, 8] for i in list3: if i < 4: list3.remove(i) print(list3)
结果:
[2, 4, 5, 6, 7, 8]
同第一个例子!!!
解决:使用逆序遍历
list3 = [1, 2, 3, 4, 5, 6, 7, 8]
# [2, 3, 4, 5, 6, 7, 8]
# [2, 4, 5, 6, 7, 8]
for i in range(len(list3)-1, -1, -1):
if list3[i] < 5:
list3.pop(i)
print(list3)
结果:
[5, 6, 7, 8]
显然删除了。因为反向遍历不存在向前推移的情况!!