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)

file

分析:

当我们在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)

file

删除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)

file

总结:

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)

file

file

解决思路讲解:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值