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程序员开发中常犯的10个错误
Jul 07 Python
python使用cPickle模块序列化实例
Sep 25 Python
Hadoop中的Python框架的使用指南
Apr 22 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
windows下python安装pip图文教程
May 25 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
python批量识别图片指定区域文字内容
Apr 30 Python
python lxml中etree的简单应用
May 10 Python
python输出数学符号实例
May 11 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
详解NumPy中的线性关系与数据修剪压缩
May 25 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实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
js DOM的学习笔记
2011/12/22 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
在Django的上下文中设置变量的方法
2015/07/20 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
Python try except else使用详解
2021/01/12 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
Ajax的优点和缺点
2014/11/21 面试题
促销活动计划书
2014/05/02 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
python基础之错误和异常处理
2021/10/24 Python