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爬取拉勾网职位数据的方法
Jan 24 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
使用EduBlock轻松学习Python编程
Oct 08 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
python保存字典和读取字典的实例代码
Jul 07 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
python读取指定字节长度的文本方法
Aug 27 Python
浅谈Python协程
Jun 17 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 Python
Python几种酷炫的进度条的方式
Apr 11 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
c#中的实现php中的preg_replace
2009/12/21 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
php中static和const关键字用法分析
2016/12/07 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
php函数式编程简单示例
2019/08/08 PHP
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
Python导入oracle数据的方法
2015/07/10 Python
详解Python进程间通信之命名管道
2017/08/28 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
入党申请书自我鉴定
2013/10/12 职场文书
百年校庆节目主持词
2014/03/27 职场文书
超市开店计划书
2014/04/26 职场文书
体育个人工作总结
2015/02/09 职场文书
Java Socket实现多人聊天系统
2021/07/15 Java/Android