Python列表remove()删除相邻的重复元素会漏删一个解决办法

问题:remove(元素名)使用循环删除多个重名的元素时,若两个本该删除的元素相邻,则会自动跳过第二个元素。
解决办法:
①while循环:删除元素1之后,下标不往后移
②for循环:添加辅助列表
③for循环:倒序删除
④while循环:将判断元素是否在列表中作为循环条件
'''
问题:remove(元素名)使用循环删除多个重名的元素时,若两个本该删除的元素相邻,则会自动跳过第二个元素。
解决办法:
①while循环:删除元素1之后,下标不往后移
②for循环:添加辅助列表
③for循环:倒序删除
④while循环:将判断元素是否在列表中作为循环条件
'''
li=[2,"酸奶","酸奶",1,1]
#错误情况
for i in li:
    if i=="酸奶":
        li.remove("酸奶")
print(li)
#结果:[2, '酸奶', 1, 1]

#解决办法
#①while循环:删除元素1之后,下标不往后移
i=0
while i<len(li):
    if li[i] == "酸奶":
        li.remove("酸奶")
    else:
        i+=1
print(li)
#结果:[2, 1, 1]

# ②for循环:添加辅助列表
help1=[]
for i in li:
    if i != "酸奶":
        help1.append(i)
print(help1)
#结果:[2, 1, 1]

# ③for循环:倒序删除
for i in li[::-1]:
    if i == "酸奶":
        li.remove("酸奶")
print(li)
#结果:[2, 1, 1]
#原因:遍历是从后往前遍历的,删除也是从后往前删的,删除后边的,不影响前边元素的下标

# ④while循环:将判断元素是否在列表中作为循环条件
del_ele="酸奶"
while del_ele in li:
    li.remove("酸奶")
print(li)
#结果:[2, 1, 1]

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值