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 相关文章推荐
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
Python lambda表达式用法实例分析
Dec 25 Python
三步实现Django Paginator分页的方法
Jun 11 Python
python模块常用用法实例详解
Oct 17 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
Python中socket网络通信是干嘛的
May 27 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
php strnatcmp()函数的用法总结
2013/11/27 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
提升Python程序运行效率的6个方法
2015/03/31 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
python中字符串的操作方法大全
2018/06/03 Python
python实现移位加密和解密
2019/03/22 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
介绍一下gcc特性
2015/10/31 面试题
计算机专业自荐信
2013/10/14 职场文书
物业门卫岗位职责
2013/12/28 职场文书
小学新教师培训方案
2014/02/03 职场文书
授权委托书格式
2014/07/31 职场文书
物流管理专业推荐信
2014/09/06 职场文书
大学教师个人总结
2015/02/10 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
工作感想范文
2015/08/07 职场文书
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android
python实现学生信息管理系统(面向对象)
2022/06/05 Python
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技