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 相关文章推荐
详解Django通用视图中的函数包装
Jul 21 Python
浅谈Python的文件类型
May 30 Python
python使用super()出现错误解决办法
Aug 14 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
Python读写文件基础知识点
Jun 10 Python
python hough变换检测直线的实现方法
Jul 12 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
python实现简单井字棋小游戏
Mar 05 Python
Python如何对XML 解析
Jun 28 Python
python爬取某网站原图作为壁纸
Jun 02 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验证码类分享
2014/11/18 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
php中异常处理方法小结
2015/01/09 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
python使用super()出现错误解决办法
2017/08/14 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
Python编写打字训练小程序
2019/09/26 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
深入浅析python的第三方库pandas
2020/02/13 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
比利时香水网上商店:NOTINO
2018/03/28 全球购物
优秀研究生自我鉴定
2013/12/04 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书