Python实现列表删除重复元素的三种常用方法分析


Posted in Python onNovember 24, 2017

本文实例讲述了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原生方法效率最高

Python 相关文章推荐
Python3 能振兴 Python的原因分析
Nov 28 Python
python中threading超线程用法实例分析
May 16 Python
python设计模式大全
Jun 27 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
Django中在xadmin中集成DjangoUeditor过程详解
Jul 24 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
Python实现AI自动抠图实例解析
Mar 05 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 #Python
详解python上传文件和字符到PHP服务器
Nov 24 #Python
Python实现矩阵转置的方法分析
Nov 24 #Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 #Python
利用python3随机生成中文字符的实现方法
Nov 24 #Python
Python内置函数 next的具体使用方法
Nov 24 #Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 #Python
You might like
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
python传递参数方式小结
2015/04/17 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
基于django传递数据到后端的例子
2019/08/16 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
美术教师求职信范文
2015/03/20 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
python可视化大屏库big_screen示例详解
2021/11/23 Python
详解Python中__new__方法的作用
2022/03/31 Python