最好不要循环删除列表和字典中的值容易报错或出现和预想不一样的结果

1. 循环删除列表

  • 报错

lists = [1, 2, 3, 4, 5, 6]

for i in range(len(lists)):
    del lists[i]
    print(lists)

  • 不会报错 -> 因为 list 已经存储到 for 循环中了 -> 但出现的结果和预想的不一样

lists = [1, 2, 3, 4, 5, 6]
for i in lists:
    del lists[lists.index(i)]
    print(lists) 
print(lists) # [2, 4, 6]

  • 正确的删除方法 -> 方向删除,从后往前删

for i in range(len(lis) - 1, -1, -1):
    del lis[i]

1.2 小练习

  • 删除列表中偶位数的值

# 方法一 -> 使用切片
lists = [11, 22, 33, 44, 55]
lists = lists[::2] # [11, 33, 55]

# 方法二 -> 添加到新的数组当中然后再重新赋值
lists = [11, 22, 33, 44, 55]
list2 = []
for i in lists:
    if lists.index(i) % 2 == 0:
        list2.append(i)
lists = list2 # [11, 33, 55]

# 方法三 -> 反向删除
lists = [11, 22, 33, 44, 55]
for i in range(len(lis) - 1, -1, -1):
    if i % 2 == 1:
        del lis[i]
print(lists) [11, 33, 55]