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实现rest请求api示例
Apr 22 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
python使用turtle库绘制树
Jun 25 Python
python3 拼接字符串的7种方法
Sep 12 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
python反编译学习之字节码详解
May 19 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Python同时处理多个异常的方法
Jul 28 Python
全网最全python库selenium自动化使用详细教程
Jan 12 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中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
python中的__slots__使用示例
2015/02/26 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
基于python实现操作git过程代码解析
2020/07/27 Python
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
担保书怎么写
2014/04/01 职场文书
二年级学生评语大全
2014/04/23 职场文书
火灾现场处置方案
2014/05/28 职场文书
离职证明标准格式
2014/09/15 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
个人党性锻炼总结
2015/03/05 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
分享python函数常见关键字
2022/04/26 Python
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL