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)
分析:#
当我们在 for
循环里删除多个值的时候,发现只删除了第一个。后面的值没有删除成功。分析过后发现 当 for
循环到if i == 33 or i == 44
当 i
的值为 33
时满足条件,这时候就会去删除 list
列表里的 33
, 删除过后后面的值就会把前面的空位填起来。这时候 44
的 key
就发生了改变.44
的 key
位置就变成了 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
就不会出现漏删除的情况了.
本作品采用《CC 协议》,转载必须注明作者和本文链接
by JeffreyBool blog
link

推荐文章: