在python编程的过程中,我们经常会遇到列表去重的问题。以下文章主要介绍Python列表去重的五种常用方法,通过示例代码详细介绍。有需要的朋友可以参考一下。
目录
前言1。使用for循环删除重复列表2,使用列表派生删除重复列表3,使用set变换函数set()删除重复列表4,使用new dictionary删除重复列表5。附:删除重复np.unique()函数摘要的Python 2D数组元素
前言
去列表在python的实际应用中非常常见,也是最基础的关键知识。
下面总结了五种常见的列表重复数据删除方法。
一、使用for循环实现列表去重
此方法消除重复后,原始顺序保持不变。
# for循环实施列表重复数据删除
list1=['a ',' b ',1,3,9,9,' a']
list2=[]
对于列表1中的l1:
如果l1不在列表2中:
list2.append(l1)
打印(列表2)
结果:['A ',' B ',1,3,9]
二、使用列表推导式去重
此方法消除重复后,原始顺序保持不变。
#使用列表派生的重复数据删除
list1=['a ',' b ',1,3,9,9,' a']
res=[]
[如果I不在res中,则在列表1中为I追加RES . append(I)]
打印(分辨率)
结果:['A ',' B ',1,3,9]
三、使用集合转换函数set()实现列表去重
原则:同一集合的元素不允许重复。
# set()列出重复数据删除
list1=['a ',' b ',1,3,9,9,' a']
list2=list(set(list1))
打印(列表2)
结果:[1,3,9,' B ',' A']
问题:使用set()函数去除重复项后,会自动排序,原列表的顺序会发生变化。
有两种解决方案:
第一种方法使用sort()方法。
# #第一个方法,sort()
list1=['a ',' b ',1,3,9,9,' a']
list2=list(set(list1))
list2.sort(key=list1.index)
打印(列表2)
结果:['A ',' B ',1,3,9]
注意:sort()方法没有返回值,它就地对列表元素进行排序。
第二种方法是使用sorted()函数。
#第二种方法,sored()
list1=['a ',' b ',1,3,9,9,' a']
list2=已排序(list(set(list1)),key=list1.index)
打印(列表2)
结果:['A ',' B ',1,3,9]
注意:python的内置函数sorted()函数返回一个新的列表,对原列表不做任何修改。
四、使用新建字典方式实现列表去重
原则:字典的“键”不允许重复。
此方法消除重复后,原始顺序保持不变。
#使用新字典实现列表去重。
list1=['a ',' b ',1,3,9,9,' a']
dic={}
dic=dic.fromkeys(list1)。按键()
打印(列表(dic))
结果:['A ',' B ',1,3,9]
五、删除列表中存在重复的数据
以上四种去重方法是保留一种,删除其他。
下面的方法是,只要有重复的,一个都不保留。
#删除重复的值,并且不保留它们。
list1=['a ',' b ',1,3,9,9,' a']
list 2=[I for I in list 1 if list 1 . count(I)==1]
打印(列表2)
结果:['B ',1,3]
这是列表重复数据消除的五种方法。可以根据自己的需求选择相应的方法。
附:Python 二维数组元素去重 np.unique()函数的使用
### 4.2元素重复数据删除
# 4.2.1一维阵列重复数据删除
a=np.array([1,2,3,4,5,5,7,3,2,2,8,8])
打印('重复数据删除前:',a)
b=np.unique(a)
打印('重复数据删除后:',b)
# 4.2.2二维阵列重复数据删除
c=NP . array((1,2),(3,4),(5,6),(1,3),(3,4),(7,6)))
打印('重复数据删除前:',c)
#方法1: set,set,这是一个无序且不重复的集合(推荐)
S=set() #创建一个空集
对于c中的t:
S.add(tuple(t)) #将数组转换为祖先元组,并确保不会被修改;将祖先添加到集合中,并完成重复数据消除。
G=np.array(list(s)) #将一个集合转换成一个列表,最后转换成一个二维数组。
打印('重复数据删除后:',g)
#一起写
Print('一旦方法消除重复:',NP . array(list(set(tuple(t)for t in c)))
#方法2:转换为虚数
r,i=np.split(c,(1,)轴=1)
打印(r)
打印(一)
x=r i * 1j
# x=c[:0] c[:1] * 1j
Print('转换为虚数:',x) #成为一维数组,可以使用np.unique()
Print('对虚数进行重复数据删除后:',np.unique(x))
print(np.unique(x,return_index=True,return_counts=True))
# return_index=True表示返回另一个参数,也是数组,
# array([0,3,1,2,5])表示重复数据删除后每个元素在重复数据删除前的数组中的位置/下标。
# return_counts=True表示返回每个元素的频率。
idx=np.unique(x,return_index=True)[1]
#列[1]中的数组正是return_index=True返回的内容:c中的位置/下标。
Print('二维数组重复数据删除:\n ',c[idx]) #提取这些下标所在的元素。
#结果:
#去除重量之前:[1 2 3 4 5 7 3 2 2 8 8]
#去除重量后:[1 2 3 4 5 7 8]
#去重前:[[1 2]
# [3 4]
# [5 6]
# [1 3]
# [3 4]
# [7 6]]
#去除重量后:[[1 2]
# [1 3]
# [5 6]
# [7 6]
# [3 4]]
#移除方法后:[[1 2]
# [1 3]
# [5 6]
# [7 6]
# [3 4]]
# [[1]
# [3]
# [5]
# [1]
# [3]
# [7]]
# [[2]
# [4]
# [6]
# [3]
# [4]
# [6]]
#转换成虚数:[[1。2.j]
# [3.4.j]
# [5.6.j]
# [1.3.j]
# [3.4.j]
# [7.6.j]]
#虚数重复后:【1。2.j 1。3.j 3。4.j 5。6.j 7。6.j]
#(数组([1。2.j,1。3.j,3。4.j,5。6.j,7。6.j]),数组([0,3,1,2,5],dtype=int64),数组([1,1,2,1,1],dtype=int64)
#二维阵列重复数据删除:
# [[1 2]
# [1 3]
# [3 4]
# [5 6]
# [7 6]]
总结
这就是关于python列表重复数据删除的五种常用方法的文章。有关python列表重复数据删除方法的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。