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时间戳与时间字符串互相转换实例代码
Nov 28 Python
详解Python中的strftime()方法的使用
May 22 Python
Python性能提升之延迟初始化
Dec 04 Python
解决Python requests 报错方法集锦
Mar 19 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Python requests库用法实例详解
Aug 14 Python
python将控制台输出保存至文件的方法
Jan 07 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
php伪静态之APACHE篇
2014/06/02 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
python中的字典使用分享
2016/07/31 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
python进程和线程用法知识点总结
2019/05/28 Python
python requests使用socks5的例子
2019/07/25 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
python 爬取小说并下载的示例
2020/12/07 Python
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
同学聚会欢迎辞
2014/01/14 职场文书
大学总结自我鉴定
2014/01/18 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
初一学生评语大全
2014/04/24 职场文书
优秀大学生自荐信
2014/06/09 职场文书
园林系毕业生求职信
2014/06/23 职场文书
关于爱国的标语
2014/06/24 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android