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 相关文章推荐
python网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 Python
Python、Javascript中的闭包比较
Feb 04 Python
python 简单的多线程链接实现代码
Aug 28 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
python实时监控logstash日志代码
Apr 27 Python
MATLAB数学建模之画图汇总
Jul 16 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 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 MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
JS实现简单日历特效
2020/01/03 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Python中私有属性的定义方式
2020/03/05 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
霸气队列口号
2014/06/18 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书