Python删除列表重复数据以及效率问题
来源:互联网 发布:停车源码 编辑:程序博客网 时间:2024/06/05 05:18
在列表去重中,根据其他语言的经验,比较容易想到的方式就是迭代删除以及set()方法。
列表总结起来处理无外乎 循环,排序,添加移除元素等操作,所以围绕这几方面考虑即可。
#coding=utf-8'''Created on 2015年5月30日@author: frozen cloud'''#原始列表originalList = ['python','A','B','C','D','E','A','B','C','F']#使用set()方法,生成一个无序不重复元素集,在海量数据去重问题中set的效率高于hash#sorted()方法有四个参数:sorted(iterable, cmp=None, key=None, reverse=False) #iterable迭代器,key列表元素的某属性作为关键字,cmp比较,比较的内容由key决定#reverse排序规则,正序、反序,返回值为与iterable相同类型的排序结果list1 = sorted(set(originalList),key = originalList.index)print list1#迭代list2 = []for i in originalList: if not i in list2: list2.append(i)print list2#集合转为列表,然后按照index排序list3 = list(set(originalList))list3.sort(key=originalList.index)print list3#keys()方法返回字典的所有键list4 = {}.fromkeys(originalList).keys()#转化为字典print {}.fromkeys(originalList)print list4#排序比较相邻元素,删除重复项def sortlist(originalList): originalList.sort() last = originalList[-1] for i in range(len(originalList)-2,-1,-1): if originalList[i] == last: originalList.remove(originalList[i]) else: last=originalList[i] return originalListprint sortlist(originalList)一次性运行结果如下:
['python', 'A', 'B', 'C', 'D', 'E', 'F']['python', 'A', 'B', 'C', 'D', 'E', 'F']['python', 'A', 'B', 'C', 'D', 'E', 'F']{'A': None, 'C': None, 'B': None, 'E': None, 'D': None, 'F': None, 'python': None}['A', 'C', 'B', 'E', 'D', 'F', 'python']['A', 'B', 'C', 'D', 'E', 'F', 'python']在以上去重方法中,第一种方式简洁高效,但是由于进行了排序,所以原有列表顺序被打乱。
第二种方式,重新建立列表添加数据,逻辑清晰,效率也很不错。
第四种方式,比第一种方式多了一步转化,必然效率不如第一种。
第五种方式,临时变量消耗内存,效率较差。
0 0
- Python删除列表重复数据以及效率问题
- Python 删除列表中的重复数据
- Python删除列表中重复元素
- WEBadi重复数据删除问题
- WEBadi重复数据删除问题
- 评论列表数据数据重复的问题
- oracle 查询重复数据以及删除重复数据
- Oracle 重复数据查询以及删除
- Python 字符串,list排序,删除重复数据
- python列表删除重复元素的三种方法
- python小练习2:删除列表中重复的元素
- 三种方法删除列表中重复的元素及效率分析!
- 三种方法删除列表中重复的元素及效率分析!
- 快速删除oracle中重复数据,效率高于直接删除数倍.
- Python 小练习 剔除列表内重复数据
- Python列表元素重复
- mysql删除重复的数据,保留一条,根据多个字段判断。以及统计重复数据
- 【Python进阶】删除list里的重复元素的三种方法效率分析
- Linux: centos软件包管理的3种方式
- 算法学习:最富盛名的程序设计竞赛
- javascript笔记(一)
- bzoj2301
- Flash和Arduino进行交互时不断重连
- Python删除列表重复数据以及效率问题
- bzoj2440
- HDU 4858 Shaolin(map暴力)
- 并行笔记
- Unity 3D中的内存管理
- 如何使用回调函数
- lua语言连接redis
- hdoj.1276 士兵队列训练问题【水题】 2015/05/30
- uibutton(上下左右箭头加放大和缩小) 封装