,,python列表去重的5种常见方法实例

,,python列表去重的5种常见方法实例

在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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: