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中的列表推导浅析
Apr 26 Python
在python中的socket模块使用代理实例
May 29 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
Python使用贪婪算法解决问题
Oct 22 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
Python 生成VOC格式的标签实例
Mar 10 Python
python定义类的简单用法
Jul 24 Python
运行python提示no module named sklearn的解决方法
Nov 29 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 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程序的方法小结
2012/02/23 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
python进程与线程小结实例分析
2018/11/11 PHP
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python生成器(Generator)详解
2015/04/13 Python
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
基于python 凸包问题的解决
2020/04/16 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
python import 上级目录的导入
2020/11/03 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
行政专员岗位职责
2014/01/02 职场文书
企业指导教师评语
2014/04/28 职场文书
安全生产承诺书范文
2014/05/22 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python