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算法学习之基数排序实例
Dec 18 Python
Python版微信红包分配算法
May 04 Python
python3.5使用tkinter制作记事本
Jun 20 Python
Python3如何解决字符编码问题详解
Apr 23 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
python绘制直方图和密度图的实例
Jul 08 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
Apr 16 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
2010/02/09 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
Vue程序调试的方法
2019/06/17 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python3 实现的人人影视网站自动签到
2016/06/19 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python+Wordpress制作小说站
2017/04/14 Python
Python探索之自定义实现线程池
2017/10/27 Python
python如何变换环境
2020/07/21 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
教师评优事迹材料
2014/01/10 职场文书
文艺晚会主持词
2014/03/24 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
小学假期安全广播稿
2014/09/28 职场文书
2014年客房部工作总结
2014/11/22 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis