zoukankan      html  css  js  c++  java
  • 删除列表中重复元素

    一、位置法

    思想:遍历整个列表,找到重复元素的位置。然后对列表中这些位置的元素进行删除。
    PS:此处删除不可用remove,.remove(str)是在列表中从前往后查找你的str,找到一个并删除,并不能实现按索引删除

    代码如下:

    l1 = ['b','c','d','b','c','a','a',"a"]
    l2 = []
    i = 0
    for i in range(len(l1)) :
        for j in range(i+1,len(l1)):
            if l1[i] == l1[j] and j not in l2:
                l2.append(j)                        #找到出现重复字符的位置
    print(l2)
    
    
    for i in l2[::-1]:
        print(l1)
        print("删除位置为:",i)
        l1.pop(i)            #每次删除,列表都会变短,所以需要从最后开始取,并从后往前开始删
        #l1.remove(l1[i])   #一开始使用了l1.remove(l1[i]),毫无作用,l1[i]就是一个str
                            # 重新在l1找到这个字符串(顺序优先),然后删除,根本无法做到从后往前删
    
        print("删除结果为:",l1)
        print("")
    
    print(l1)
    

    运行结果:

    [3, 4, 6, 7]
    ['b', 'c', 'd', 'b', 'c', 'a', 'a', 'a']
    删除位置为: 7
    删除结果为: ['b', 'c', 'd', 'b', 'c', 'a', 'a']
    
    ['b', 'c', 'd', 'b', 'c', 'a', 'a']
    删除位置为: 6
    删除结果为: ['b', 'c', 'd', 'b', 'c', 'a']
    
    ['b', 'c', 'd', 'b', 'c', 'a']
    删除位置为: 4
    删除结果为: ['b', 'c', 'd', 'b', 'a']
    
    ['b', 'c', 'd', 'b', 'a']
    删除位置为: 3
    删除结果为: ['b', 'c', 'd', 'a']
    
    ['b', 'c', 'd', 'a']
    
    进程已结束,退出代码 0
    

    二、重复元素计数法

    思想:对整个列表的所有元素进行计数,将计数存入字典中(key(列表元素):value(出现次数))。字典中所有value大于1的key,都在列表中进行删除操作。

    PS:此处的删除操作是remove函数,其特性是按顺序查找key,是从前删起,并不能实现保留重复元素的第一次,只能保留最后一次

    代码如下:

    l1 = ['b','c','d','b','c','a','a']
    l2 = {}
    
    for i in range(len(l1)):        #这个for循环将l1中所有字符进行计数,并存入字典l2
        if l1[i] in l2:
            l2[l1[i]] += 1
        else:
            l2[l1[i]] = 1
    print(l2, end="
    
    ")
    print(f"原数组为:{l1}
    ")
    
    for i in l2:                    #这个for循环将l2中所有key的次数进行判断,大于1就在l1中进行删除操作
        if l2[i] > 1:               #并在l2中进行-1操作,直至计数为1
            print(f"删除的元素为:{i}")
            l1.remove(i)
            print(f"删除结果为:{l1}
    ")
            l2[i] -= 1
    
    print(l1)
    

    结果为:

    {'b': 2, 'c': 2, 'd': 1, 'a': 2}
    
    原数组为:['b', 'c', 'd', 'b', 'c', 'a', 'a']
    
    删除的元素为:b
    删除结果为:['c', 'd', 'b', 'c', 'a', 'a']
    
    删除的元素为:c
    删除结果为:['d', 'b', 'c', 'a', 'a']
    
    删除的元素为:a
    删除结果为:['d', 'b', 'c', 'a']
    
    ['d', 'b', 'c', 'a']
    
  • 相关阅读:
    锤子科技官网:问题整理及注意事项
    springboot中文文档
    Spring Framework 开发参考手册中文(在线HTML)
    .is() 全选复选的判断
    c:forEach用法
    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
    火狐浏览器下载文件保存文件名的乱码问题
    多线程安全的解决方法
    MySQL的concat以及group_concat的用法
    mysql 将时间转换成时间戳
  • 原文地址:https://www.cnblogs.com/zhubincheng/p/12433039.html
Copyright © 2011-2022 走看看