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黑魔法Descriptor描述符的实例解析
Jun 02 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
Python自定义线程类简单示例
Mar 23 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
python实现静态服务器
Sep 05 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
Python内置函数property()如何使用
Sep 01 Python
python中的split、rsplit、splitlines用法说明
Oct 23 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代码
2012/06/08 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
深入了解javascript 数组的sort方法
2018/06/01 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
python模拟Django框架实例
2016/05/17 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
python中的闭包函数
2018/02/09 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
keras topN显示,自编写代码案例
2020/07/03 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
图书室管理制度
2014/01/19 职场文书
人事任命书格式
2014/06/05 职场文书
小学假期安全广播稿
2014/09/28 职场文书
2014年大学生工作总结
2014/11/20 职场文书
2019公司管理制度
2019/04/19 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
带你学习MySQL执行计划
2021/05/31 MySQL