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将图片批量从png格式转换至WebP格式
Aug 22 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
Python日期时间Time模块实例详解
Apr 15 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
Jun 05 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
浅析php单例模式
2014/11/25 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
javascript 写类方式之二
2009/07/05 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
Python扫描端口的实现
2021/01/25 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
自荐信的格式
2014/03/10 职场文书
公司担保书格式范文
2014/05/12 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
国庆促销活动总结
2014/08/29 职场文书
小学班主任个人总结
2015/03/03 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python