三种方法删除列表中重复的元素及效率分析!
2013-08-30 16:24
501 查看
方法一:
使用列表对象的sort()方法对列表进行排序,从最后一个元素开始循环迭代列表,判断相邻的两元素是否是否相等!
方法二:
定义一个临时列表,循环迭代出的元素如果不在临时表中,则加入,最后返回临时列表!
方法三:
1、方法一相对方法二来说,有更多的额外操作如:排序、赋值。因为在Python中,变量是不可变的,每迭代出一个元素比较不相等后的操作是都是新建立一个局部变量并赋值而丢弃原变量,这需要消耗更多的内存!同时因为排序操作,破坏了相对位置。
2、方法二建立一个临时列表进行操作,而列表是可变的,每次追加元素都只是在原列表上增加一个索引及值,因而相对方法一来说效率会更高!
3、第三个方法无疑是这三种方法中效率最好的(无论是代码的简洁还是运行效率):set()是内置的数据类型“集合类型”,它是无序的且值是唯一项的!所以set() 执行的结果就是转为集合且直接去除了重复的元素,再list()则将集合又转回列表类型。
但是,set()是会破坏了排列顺序,如果要保留排序,list(set(lists)) 可改为 sorted(set(lists),key=lists.index)
使用列表对象的sort()方法对列表进行排序,从最后一个元素开始循环迭代列表,判断相邻的两元素是否是否相等!
1 2 3 4 5 6 7 8 9 10 | def methodOne(list): list.sort() lenList = len(list) lastItem = list[lenList-1] for i in range(lenList-2,-1,-1): if list[i] == lastItem: list.remove(list[i]) else: lastItem = list[i] return list |
定义一个临时列表,循环迭代出的元素如果不在临时表中,则加入,最后返回临时列表!
1 2 3 4 5 6 | def methodTwo(list): tempList = [] for i in list: if not i in tempList: tempList.append(i) return tempList |
1 2 | lists=[20,12,34,12,24,34,55,27] print list(set(lists)) |
2、方法二建立一个临时列表进行操作,而列表是可变的,每次追加元素都只是在原列表上增加一个索引及值,因而相对方法一来说效率会更高!
3、第三个方法无疑是这三种方法中效率最好的(无论是代码的简洁还是运行效率):set()是内置的数据类型“集合类型”,它是无序的且值是唯一项的!所以set() 执行的结果就是转为集合且直接去除了重复的元素,再list()则将集合又转回列表类型。
但是,set()是会破坏了排列顺序,如果要保留排序,list(set(lists)) 可改为 sorted(set(lists),key=lists.index)
相关文章推荐
- 三种方法删除列表中重复的元素及效率分析!
- 【Python进阶】删除list里的重复元素的三种方法效率分析
- Python实现列表删除重复元素的三种常用方法分析
- python列表删除重复元素的三种方法
- 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素
- 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素
- Python实现连接两个无规则列表后删除重复元素并升序排序的方法
- 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素
- 删除排序数组中的重复元素(三种方法的比较)
- Python三种方法删除列表中的元素
- Java删除ArrayList中的重复元素的2种方法
- mysql表删除重复记录方法总结及效率对比
- 两种方法删除ArrayList里重复元素
- python删除列表中重复记录的方法
- js面试题——为javascript增加删除重复元素的方法
- Python中列表元素转为数字的方法分析
- 用Linq快速删除重复的元素的方法
- 集合ArrayList中删除重复元素两种方法
- 数据库-删除表中重复记录实现方法分析
- Javascript数组删除重复元素的方法