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语言的面相对象编程方式初步学习
Mar 12 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
Python 共享变量加锁、释放详解
Aug 28 Python
Python流程控制常用工具详解
Feb 24 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
python右对齐的实例方法
Jul 05 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
python基于opencv批量生成验证码的示例
Apr 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
php数组一对一替换实现代码
2012/08/31 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python构建XML树结构的方法示例
2017/06/30 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python实现的特征提取操作示例
2018/12/03 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
python关于调用函数外的变量实例
2019/12/26 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
Python tkinter和exe打包的方法
2020/02/05 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
幼儿园教师个人反思
2014/01/30 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
授权收款委托书
2014/09/23 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
孔繁森观后感
2015/06/10 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL