python|python 在for 循环里删除多个元素的坑

# -*- coding:utf-8 -*-list = [11,33,44,55,66,77,88]# 使用for 删除某个元素for i in list: if i == 33 or i == 44: list.remove(i)print(list)


分析: 【python|python 在for 循环里删除多个元素的坑】当我们在for 循环里删除多个值的时候,发现只删除了第一个.后面的值没有删除成功. 分析过后发现 当for 循环到
if i == 33 or i == 44i 的值为33时满足条件,这时候就会去删除 list 列表里的33 , 删除过后后面的值就会把前面的空位填起来.这时候44key就发生了改变.44key位置就变成了33以前key的位置,这样44就会删除不到了.
删除3个值
# -*- coding:utf-8 -*-list = [11,33,44,55,66,77,88]# 使用for 删除某个元素for i in list: if i == 33 or i == 44 or i== 55: list.remove(i)print(list)


删除4个值
# -*- coding:utf-8 -*-list = [11,33,44,55,66,77,88]# 使用for 删除某个元素for i in list: if i == 33 or i == 44 or i== 55 or i == 66: list.remove(i)print(list)


总结: python for 删除值请不要这样使用.坑很深.
解决办法
# -*- coding:utf-8 -*-list = [11,33,44,55,66,77,88]# 使用for 删除某个元素# 定义一个空列表 remove_list = []for i in list: if i == 33 or i == 44: remove_list.append(i)# 把需要删除的值保存到空列表for i in remove_list: list.remove(i)print(list)



解决思路讲解: 定义一个空列表变量用来保存需要删除的值,然后for 循环需要删除的值,这时候去remove 就不会出现漏删除的情况了.

    推荐阅读