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]
显然删除了。因为反向遍历不存在向前推移的情况!!