在Python中,列表是非常重要的一种数据类型,也是我使用最为广泛的一种数据类型,很多数据的处理和转换工作都是基于list完成,在之前的学习工作中经常会有一种与list操作相关的需求就是去除列表中的重复元素,这个对于不是初学者来说肯定是非常简单的了,比如对于列表A来说,一句简单的list(set(A))就完成的所需要的操作了,那么有没有其他的方法也可以完成相同的操作呢?当然是有的了,我python无敌的好吗!
想到这里,我就简单总结了一下我所用到的一些列表元素去重方法,具体如下:
# !/usr/bin/env python# -*- coding:utf-8 -*- '''__Author__:沂水寒城功能: python列表去除方法总结(7种方法)''' import sysreload(sys)import copysys.setdefaultencoding("utf-8")from collections import Counter def func1(data_list): ''' 使用内置set方法去重 ''' return list(set(data_list)) def func2(data_list): ''' 借助字典方法fromkeys ''' return list({}.fromkeys(data_list).keys()) def func3(data_list): ''' 使用类列表推导式 ''' res_list=[] for one in data_list: if not one in res_list: res_list.append(one) return res_list def func4(data_list): ''' 使用sorted函数(其实本质上还是使用set方法进行的排序) ''' res_list=copy.deepcopy(data_list) res_list=sorted(set(data_list),key=data_list.index) return res_list def func5(data_list): ''' 使用"排序+计数"的方法 ''' result_list=[] temp_list=sorted(data_list) i=0 while i
简单进行一下测试,结果输出如下:
[0, 2, 3, 4, 5, 7, 9, 12, 78, 44][0, 2, 3, 4, 5, 7, 9, 12, 78, 44][12, 4, 7, 3, 2, 5, 78, 9, 0, 44][12, 4, 7, 3, 2, 5, 78, 9, 0, 44][0, 2, 3, 4, 5, 7, 9, 12, 44, 78][12, 4, 7, 3, 2, 5, 78, 9, 0, 44][4, 3, 0, 5, 12, 2, 7, 9, 78, 44]
还是很有意思的吧,简单却又强大,大家从上面的去重结果是否发现了什么呢?