• 技术文章 >后端开发 >Python教程

    三种方法删除列表中重复的元素及效率分析

    高洛峰高洛峰2016-10-19 17:12:50原创978
    方法一:

    使用列表对象的sort()方法对列表进行排序,从最后一个元素开始循环迭代列表,判断相邻的两元素是否是否相等!

    def methodOne(list):
        list.sort()
        lenList = len(list)
        lastItem = list[lenList-1]
        for i in range(lenList-2,-1,-1):
            if list[i] == lastItem:
                list.remove(list[i])
            else:
                lastItem = list[i]
        return list

    方法二:

    定义一个临时列表,循环迭代出的元素如果不在临时表中,则加入,最后返回临时列表!

    def methodTwo(list):
        tempList = []
        for i in list:
            if not i in tempList:
                tempList.append(i)
        return tempList

    方法三:

    lists=[20,12,34,12,24,34,55,27]
    print list(set(lists))

    1、方法一相对方法二来说,有更多的额外操作如:排序、赋值。因为在Python中,变量是不可变的,每迭代出一个元素比较不相等后的操作是都是新建立一个局部变量并赋值而丢弃原变量,这需要消耗更多的内存!同时因为排序操作,破坏了相对位置。

    2、方法二建立一个临时列表进行操作,而列表是可变的,每次追加元素都只是在原列表上增加一个索引及值,因而相对方法一来说效率会更高!

    3、第三个方法无疑是这三种方法中效率最好的(无论是代码的简洁还是运行效率):set()是内置的数据类型“集合类型”,它是无序的且值是唯一项的!所以set() 执行的结果就是转为集合且直接去除了重复的元素,再list()则将集合又转回列表类型。

    但是,set()是会破坏了排列顺序,如果要保留排序,list(set(lists)) 可改为 sorted(set(lists),key=lists.index)

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:方法 列表
    上一篇:python图像文字识别 下一篇:深入理解python函数传参机制
    千万级数据并发解决方案

    相关文章推荐

    • 详细介绍python的numpy模块• Python多进程知识点总结• Python模块化整理和第三方模块的安装(总结分享)• 一起聊聊Python的编码样式• 带你搞懂Python反序列化
    1/1

    PHP中文网