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中多线程编程的队列运作示例
Apr 16 Python
详解python之简单主机批量管理工具
Jan 27 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
在Python中使用gRPC的方法示例
Aug 08 Python
详解Python循环作用域与闭包
Mar 21 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
Pytorch模型转onnx模型实例
Jan 15 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
浅析python中的del用法
Sep 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网页显示各种语法错误
2013/09/23 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
python实现画出e指数函数的图像
2019/11/21 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
python Scrapy框架原理解析
2021/01/04 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
招商业务员岗位职责
2013/12/16 职场文书
给护士表扬信
2014/01/19 职场文书
家长评语和期望
2014/02/10 职场文书
辞职离别感言
2015/08/04 职场文书
企业年会祝酒词
2015/08/11 职场文书
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python