Python实现列表删除重复元素的三种常用方法分析
作者:caochao88 发布时间:2022-02-17 20:21:36
标签:Python,列表,重复元素
本文实例讲述了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原生方法效率最高
PS:这里再为大家提供几款去重复工具供大家参考使用:
在线去除重复项工具:
http://tools.jb51.net/code/quchong
在线文本去重复工具:
http://tools.jb51.net/aideddesign/txt_quchong
希望本文所述对大家Python程序设计有所帮助。
来源:http://www.cnblogs.com/tudas/p/python-delete-duplicate-element-from-list.html
0
投稿
猜你喜欢
- 下载python3.6.5安装包1. 上传安装包。打开终端,利用命令cd 进入文件所在文件夹里python@ubun
- 笔者在运行 import tensorflow as tf时出现下面的错误,但在运行import tensorflow时没有出错。>&
- MySQL 修改密码实例详解许久不用MySQL了,今天打开HediSQL连接mysql时发现root密码忘记了,修改密码操作捣鼓了一阵子,记
- 1、我的第一个个人主页一打开就是一张很眩的图片,图片上有个“进入”,点击后才算真正看到我的主页。现在回想起来那个时候这样做,大概是很想迅速展
- 虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错。Tony Hoare 在19
- 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) &
- 效果图from wxpyimport *import requestsfrom datetimeimport datetimeimport
- 本章给大家在项目使用时候,常见的一种情况解决案例,即是当我们调用多个线程,使用了同一个函数去处理数据的时候,有些用函数已经处理完成,但是有些
- 前言相信大家都应该有所体会,在平时经常会遇到处理 Excel 表格数据的情况,人工处理起来实在是太麻烦了,我们可以使用 Python 来解决
- 在web运行中很重要的一个功能就是加载静态文件,在django中可能已经给我们设置好了,我们只要直接把模板文件放在templates就好了,
- 前言之前用过Eel做的桌面应用觉得已经够 * 了,不过由于Eel是调用Chrome,时常出现各种小问题,比如窗口大小设置后有时候不管用,鼠标右键
- 同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。 使用的数据库
- 在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下re模块下的findall()函数和多个表达式元组相遇的时
- 解决办法1. 卸载重装,不设root密码,因为MySql默认密码为空。 解决办法2. 保持现在的密码,打开“MySQL Command Li
- 目前防采集的方法有很多种,先介绍一下常见防采集策略方法和它的弊端及采集对策: 一、判断一个IP在一定时间内对本站页面的访问次数,如果明显超过
- Some readers have asked to me what
- 模块a.py 想用 b.py中公有数据 cntb的python文件#!/usr/bin/env python# coding:utf8fro
- 1:masterha_check_repl 副本集方面报错 replicates is not defined in
- 看lifesinger的《由Kimi找茬想到的》,我想到的:1、 我不同意将“合并付款”定调在“很多卖家都需要”。这个“很多”在卖家里面大概
- 前言MySQL是目前非常流行的数据库之一,也是中小企业持久化存储的首选数据库。不同于我们日常学习,在实际应用中,MySQL服务都会挂载在某台