广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么实现列表去重复项
  • 134
分享到

Python中怎么实现列表去重复项

2023-06-16 12:06:49 134人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python中怎么实现列表去重复项,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方式## 1. 新建列表,如果新列表中不存在,则添加到新列表。 

python中怎么实现列表去重复项,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

方式

## 1. 新建列表,如果新列表中不存在,则添加到新列表。 def unique(data):     new_list = []     for item in data:         if item not in new_list:             new_list.append(item)     return new_list   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("new_list + not in data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  # result $ Python -V Python 2.7.16 $ python unique.py  ('for list + not in. data:', ['a', 1, 2, 'b']) time:0.0441074371338 ms  ## 2. 新建列表。根据下标判断是否存在新列表中,如果新列表中不存在则添加到新列表。 def unique(data):     new_list = []     for i in range(len(data)):         if data[i] not in new_list:             new_list.append(data[i])     return new_list   ## 2.1 新建列表,使用列表推导来去重。是前一种的简写。 def unique(data):     new_list = []     [new_list.append(i) for i in data if not i in new_list]     return new_list  # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("for range + not in. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 3. 通过index找不到该项,则追加到新列表中。index找不到会报错,因此放在异常处理里。 def unique(data):     new_list = []     for i in range(len(data)):         item = data[i]         try:             if (new_list.index(item) < 0):                 print('new_list:', new_list)         except ValueError:             new_list.append(item)     return new_list   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("list index + except:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 4. 新建列表,两个循环。如果内循环与外循环项相同,且下标相同就添加到新列表,其余忽略 def unique(data):     new_list = []     for i in range(len(data)):         j = 0         while j <= i:             if data[i] == data[j]:                 if i == j:                     new_list.append(data[i])                 break             j += 1     return new_list  # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("new list + for. new_list:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 5. 在原有列表上移除重复项目。自后往前遍历,逐个与前面项比较,如果值相同且下标相同,则移除当前项。 def unique(data):     l = len(data)     while (l > 0):         l -= 1         i = l         while i > 0:             i -= 1             if data[i] == data[l]:                 del data[l]                 break     return data  # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("one list while. last -> first result. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 6. 在原有列表上移除重复项目。自前往后遍历,逐个与后面项比较,如果值相同且下标相同,则移除当前项。 def unique(data):     l = len(data)     i = 0     while i < l:         j = i + 1         while j < l:             if data[i] == data[j]:                 del data[j]                 l -= 1                 i -= 1                 break             j += 1         i += 1     return data   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("one list while. first -> last result. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 7. 新建列表。遍历列表,利用index比较出现的位置,如果出现在第一次的位置则追加到新数组。 def unique(data):     new_list = []     for i in range(len(data)):         if i == data.index(data[i]):             new_list.append(data[i])     return new_list   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("for range + index. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 8. 利用字典属性唯一性来实现去重复。 def unique(data):     obj = {}     for item in data:         obj[item] = item     return obj.values()   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("list + dict:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 或者直接通过dict.fromkeys来实现 print("dict fromkeys:", dict.fromkeys(data).keys())  ## 9. 利用filter函数,即把不符合条件的过滤掉。这里filter不支持下标,因此需要借助外部列表存储不重复项 def uniq(item):     i = data.index(item)     if (item not in new_list):         new_list.append(item)         return True     return False def unique(item):     if obj.get(item) == None:         obj[item] = item         return True     return False   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() new_list = [] print('filter + list + not in: ', filter(uniq, data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 10. 利用字典结合过滤来实现去重复。 def unique(item):     if obj.get(item) == None:         obj[item] = item         return True     return False   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() obj = {} print("filter + dict + get:", filter(unique, data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 11. 利用map来实现去重复。与map与filter类似,是一个高阶函数。可以针对其中项逐个修改操作。 ## 与filter不同map会保留原有项目,并不会删除,因此值可以改为None,然后再过滤掉。 def unique(item):     if item not in new_list:         new_list.append(item)         return item     return None   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] new_list = [] start_time = time.time()  print("list from Map:", filter(lambda item: item != None, map(unique, data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 12. 利用set数据结构里key的唯一性来去重复 data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] print("from Set:", list(set(data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 13. 提前排序,从后向前遍历,将当前项与前一项对比,如果重复则移除当前项 def unique(data):     data.sort()     l = len(data)     while (l > 0):         l -= 1         if (data[l] == data[l - 1]):             data.remove(data[l])     return data   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("sort + remove:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 14. 提前排序,自前往后遍历,将当前项与后一项对比,如果重复则移除当前项 def unique(data):     """      in python 3: TypeError: '<' not supported between instances of 'int' and 'str'      need to keep the same Type of member in List     """     data.sort()     l = len(data) - 1     i = 0     while i < l:         if (data[i] == data[i + 1]):             del data[i]             i -= 1             l -= 1         i += 1     return data   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("sort+del ASE:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 15. 利用reduce函数来去重复。reduce具有累计的作用,判断如果不在累计结果中出现,则追加到结果中。 import functools   def unique(data):     new_list = []      def foo(result, item):         if isinstance(result, list) == False:             result = [result]         return result if item in result else result + [item]      return functools.reduce(foo, data)   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("functools.reduce:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 16. 利用递归调用来去重复。递归自后往前逐个调用,当长度为1时终止。 ## 当后一项与前任一项相同说明有重复,则删除当前项。相当于利用自我调用来替换循环 def recursion_unique(data, len):     if (len <= 1):         return data      l = len     last = l - 1     is_repeat = False      while (l > 1):         l -= 1         if (data[last] == data[l - 1]):             is_repeat = True             break      if (is_repeat):         del data[last]      return recursion_unique(data, len - 1)   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("recursion_unique:", recursion_unique(data, len(data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 17. 利用递归调用来去重复的另外一种方式。递归自后往前逐个调用,当长度为1时终止。 ## 与上一个递归不同,这里将不重复的项目作为结果拼接起来 def recursion_unique_new(data, len):     if (len <= 1):         return data      l = len     last = l - 1     is_repeat = False     while (l > 1):         l -= 1         if (data[last] == data[l - 1]):             is_repeat = True             break      if (is_repeat):         del data[last:]         result = []     else:         result = [data[last]]      return recursion_unique_new(data, len - 1) + result   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("recursion_unique_new:", recursion_unique_new(data, len(data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 18. 利用numpy lib库. 需提前安装 `pip install numpy` import numpy as np   def unique(data):     res = np.array(data)     return list(np.unique(res))   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("import numpy as np.unique:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")
Python中怎么实现列表去重复项

关于Python中怎么实现列表去重复项问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网Python频道了解更多相关知识。

--结束END--

本文标题: Python中怎么实现列表去重复项

本文链接: https://www.lsjlt.com/news/283573.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中怎么实现列表去重复项
    Python中怎么实现列表去重复项,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方式## 1. 新建列表,如果新列表中不存在,则添加到新列表。 ...
    99+
    2023-06-16
  • Python列表去重怎么实现
    可以通过使用set()函数,将列表转换为集合,实现列表去重。例如:lst = [1, 2, 3, 3, 4, 5, 5]new_ls...
    99+
    2023-10-20
    Python
  • python怎么去除列表中的重复元素
    可以使用set()函数将列表转换为集合,再将集合转换为列表,即可去除列表中的重复元素。具体代码如下:```python# 原始列表l...
    99+
    2023-09-23
    python
  • 怎么在java项目中利用List对象列表实现去重
    这篇文章给大家介绍怎么在java项目中利用List对象列表实现去重,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、list去重1.1 实体类StudentList<Student>容量10k以上,要求去重...
    99+
    2023-05-31
    java list ava
  • 如何使用python实现列表去重
    小编给大家分享一下如何使用python实现列表去重,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python实现列表去重的方法先...
    99+
    2022-10-19
  • Python中字符串和列表怎么去重
    这篇文章主要介绍“Python中字符串和列表怎么去重”,在日常操作中,相信很多人在Python中字符串和列表怎么去重问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中字符串和列表怎么去重”的疑惑有所...
    99+
    2023-07-05
  • 如何使用Python的set()函数去除列表中的重复项
    在日常编程中,经常会遇到需要去除列表中重复项的情况,而Python的集合(set)函数提供了一种简单且高效的方法来实现这个目标。本文将介绍如何使用Python的set()函数去除列表中的重复项,并提供相应的代码示例。Python的set()...
    99+
    2023-11-18
    Python 去重 set()函数
  • Java8怎么利用Stream实现列表去重
    这篇文章主要介绍“Java8怎么利用Stream实现列表去重”,在日常操作中,相信很多人在Java8怎么利用Stream实现列表去重问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java8怎么利用Stream...
    99+
    2023-06-30
  • Python中字典列表中删除重复项
    要从字典列表中删除重复项: 使用字典推导来遍历列表。使用每个 id 属性的值作为键,使用字典作为值。使用 dict.values() 方法只获取唯一的字典。使用&...
    99+
    2023-05-16
    Python字典删除重复项 Python 删除重复项 Python列表删除重复项
  • python如何去除列表中的重复元素
    可以使用set()函数来去除列表中的重复元素。set()函数能够将列表转换为集合,并且集合中不允许有重复元素,然后再将集合转换为列表。具体代码如下:```pythonoriginal_list = [1, 2, 3, 2, 4, 3, ...
    99+
    2023-08-11
    python
  • 怎么使用python list去除重复项
    今天小编给大家分享一下怎么使用python list去除重复项的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2022-10-19
  • python怎么删除列表中的重复值
    可以使用set()函数来删除列表中的重复值。步骤如下: 定义一个列表。 将列表转换为集合,即使用set()函数。 将集合转换回列表...
    99+
    2023-10-24
    python
  • Python怎么删除列表中重复元素
    直接遍历列表删除l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2] for el in l1: if l1.count(el) > 1: ...
    99+
    2023-05-14
    Python
  • Python实现列表拼接和去重的三种方式
    目录列表拼接三种方式 方式一:简简单单的“+” 方法二:切片赋值 方式三:列表自带的extend() 列表去重的三种方式 利用集合set的特性 利用字典key的不可重复属性 利用in...
    99+
    2022-11-12
  • python怎么删除列表重复元素
    要删除列表中的重复元素,可以使用set()函数和list()函数的组合来实现。例如,假设有一个列表nums,其中包含了重复的元素:n...
    99+
    2023-10-24
    python
  • python列表怎么找出重复元素
    可以使用python中的集合(set)来找出列表中的重复元素。集合是一种无序且不重复的数据结构,所以将列表转换为集合后,再将集合转换...
    99+
    2023-09-29
    python
  • ES6中怎么去除Array对象重复项
    这篇文章将为大家详细讲解有关ES6中怎么去除Array对象重复项,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。输入例子[false, true,&...
    99+
    2022-10-19
  • Python实现列表拼接和去重的方法有哪些
    本篇内容主要讲解“Python实现列表拼接和去重的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python实现列表拼接和去重的方法有哪些”吧!目录列表拼接三种方式方式一:简简单单的“...
    99+
    2023-06-20
  • 使用Python怎么删除列表重复元素
    本篇文章为大家展示了使用Python怎么删除列表重复元素,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pi...
    99+
    2023-06-14
  • Python实现嵌套列表及字典并按某一元素去重复功能示例
    本文实例讲述了Python实现嵌套列表及字典并按某一元素去重复功能。分享给大家供大家参考,具体如下: #! /usr/bin/env python #coding=utf-8 class HostSch...
    99+
    2022-06-04
    嵌套 示例 并按
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作