zoukankan      html  css  js  c++  java
  • python列表删除重复元素的三种方法

    给定一个列表,要求删除列表中重复元素。

    listA = ['python','语','言','是','一','门','动','态','语','言']

    方法1,对列表调用排序,从末尾依次比较相邻两个元素,遇重复元素则删除,否则指针左移一位重复上述过程:

    复制代码
    def deleteDuplicatedElementFromList(list):
            list.sort();
            print("sorted list:%s" % list)
            length = len(list)
            lastItem = list[length - 1]
            for i in range(length - 2,-1,-1):
                    currentItem = list[i]
                    if currentItem == lastItem:
                            list.remove(currentItem)
                    else:
                            lastItem = currentItem
            return list
    复制代码

    方法2,设一临时列表保存结果,从头遍历原列表,如临时列表中没有当前元素则追加:

    复制代码
    def deleteDuplicatedElementFromList2(list):
            resultList = []
            for item in list:
                    if not item in resultList:
                            resultList.append(item)
            return resultList
    复制代码

    方法3,利用python中集合元素惟一性特点,将列表转为集合,将转为列表返回:

    def deleteDuplicatedElementFromList3(listA):
            #return list(set(listA))
            return sorted(set(listA), key = listA.index)

    执行结果:

    复制代码
    print(deleteDuplicatedElementFromList(listA))        
    #sorted list:['python', '一', '动', '态', '是', '言', '言', '语', '语', '门']
    #['python', '一', '动', '态', '是', '言', '语', '门']
    
    print(deleteDuplicatedElementFromList2(listA))        
    #['python', '语', '言', '是', '一', '门', '动', '态']
    
    print(deleteDuplicatedElementFromList3(listA))        
    #['python', '语', '言', '是', '一', '门', '动', '态']
    复制代码

    分析:

    方法1,逻辑复杂,临时变量保存值消耗内存,返回结果破坏了原列表顺序,效率最差
    方法2,直接调用append方法原处修改列表,逻辑清晰,效率次之
    方法3,极度简洁,使用python原生方法效率最高

  • 相关阅读:
    windows XP 下的DTRACE 跟踪 学习
    copy to tmp table
    快麦
    SQL SERVER BOOK
    启锐电子面单驱动
    grep---find
    mysql中kill掉所有锁表的进程
    sqlserverinternals.com
    从顺序随机I/O原理来讨论MYSQL MRR NLJ BNL BKA
    解析MYSQL BINLOG二进制格式
  • 原文地址:https://www.cnblogs.com/s-1314-521/p/9766626.html
Copyright © 2011-2022 走看看