python中如何去重,python3列表去重

  python中如何去重,python3列表去重

  在python编程的过程中,我们经常会遇到列表去重的问题。以下文章主要介绍Python列表去重的五种常用方法,通过示例代码详细介绍。有需要的朋友可以参考一下。

  00-1010前言1。使用for循环删除重复列表2,使用列表派生删除重复列表3,使用set变换函数set()删除重复列表4,使用new dictionary删除重复列表5。附:删除重复np.unique()函数摘要的Python 2D数组元素

  

目录

  去列表在python的实际应用中非常常见,也是最基础的关键知识。

  下面总结了五种常见的列表重复数据删除方法。

  

前言

  此方法消除重复后,原始顺序保持不变。

  # for循环实施列表重复数据删除

  list1=[a , b ,1,3,9,9, a]

  list2=[]

  对于列表1:中的l1

  如果l1不在列表2:中

  list2.append(l1)

  打印(列表2)

  结果:[A , B ,1,3,9]

  

一、使用for循环实现列表去重

  此方法消除重复后,原始顺序保持不变。

  #使用列表派生的重复数据删除

  list1=[a , b ,1,3,9,9, a]

  res=[]

  [如果I不在res中,则在列表1中为I追加RES . append(I)]

  打印(分辨率)

  结果:[A , B ,1,3,9]

  

二、使用列表推导式去重

  原则:同一集合的元素不允许重复。

  # 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()函数返回一个新的列表,对原列表不做任何修改。

  

三、使用集合转换函数set()实现列表去重

  原则:字典的“键”不允许重复。

  此方法消除重复后,原始顺序保持不变。

  #使用新字典实现列表去重。

  list1=[a , b ,1,3,9,9, a]

  dic={}

  dic=dic.fromkeys(list1)。按键()

  打印(列表(dic))

  结果:[A , B ,1,3,9]

  

四、使用新建字典方式实现列表去重

  据

  上面的4种去重方法,都是保留一个,删除其他

  下面这种方法则是,只要存在重复,一个都不保留

  

# 删除存在重复的值,不保留

  list1 = [a, b, 1, 3, 9, 9, a]

  list2 = [i for i in list1 if list1.count(i) == 1]

  print(list2)

  

  结果:[‘b’, 1, 3]

  以上就是关于列表去重的5种方法,可以根据需求选择对应的方法。

  

  

附:Python 二维数组元素去重 np.unique()函数的使用

  

### 4.2 元素去重

  # 4.2.1 一维数组去重

  a = np.array([1, 2, 3, 4, 5, 5, 7, 3, 2, 2, 8, 8])

  print(去重前:, a)

  b = np.unique(a)

  print(去重后:, b)

  # 4.2.2 二维数组去重

  c = np.array(((1, 2), (3, 4), (5, 6), (1, 3), (3, 4), (7, 6)))

  print(去重前:, c)

  # 方法一:利用set,set是无序不重复集合(推荐)

  s = set() #创建空集合

  for t in c:

   s.add(tuple(t)) #将数组转为元祖tuple,保证不被修改;再把元祖加入到集合中,完成去重

  g = np.array(list(s)) # 将集合转换为列表,最后转为二维数组

  print(去重后:, g)

  # 合起来写

  print(方法一去重后:, np.array(list(set(tuple(t) for t in c))))

  # 方法二:转换为虚数

  r, i = np.split(c, (1, ), axis=1)

  print(r)

  print(i)

  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 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]

  # (array([1.+2.j, 1.+3.j, 3.+4.j, 5.+6.j, 7.+6.j]), array([0, 3, 1, 2, 5], dtype=int64), array([1, 1, 2, 1, 1], dtype=int64))

  # 二维数组去重:

  # [[1 2]

  # [1 3]

  # [3 4]

  # [5 6]

  # [7 6]]

  

  

  

总结

  到此这篇关于python列表去重的5种常见方法的文章就介绍到这了,更多相关python列表去重方法内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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