广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python算法题----列表去重
  • 806
分享到

Python算法题----列表去重

算法列表Python 2023-01-31 05:01:17 806人浏览 八月长安

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

摘要

有这样一个列表[1, 1, 1, 2, 3, 3, 2, 4, 3, 4, 5, 5, 5, 6, 7, 8, 9, 9, 9, 9, 10, 10], 写一个函数,将其重复元素去除。这道题,方法很多的有没有。下面就演示一下茴香豆的四种写法

有这样一个列表[1, 1, 1, 2, 3, 3, 2, 4, 3, 4, 5, 5, 5, 6, 7, 8, 9, 9, 9, 9, 10, 10], 写一个函数,将其重复元素去除。

这道题,方法很多的有没有。下面就演示一下茴香豆的四种写法。

解法一:

Python的内置特性

利用python set数据结构的不重复行,转换为set,然后再转为list,一行代码搞定

def uniqList01(data=None):
    return list(set(data))


解法二:

遍历搜索去重添加

创建一个新列表,遍历旧的列表,先把第一个塞进新列表中,然后判断每一个元素在新列表中是否存在,不存在就塞进去。

def uniqList02(data=None):
    newdata = [data[0]]
    for i in data[1:]:
        if i not in newdata:
            newdata.append(i)
    return newdata


解法三:

双指针比较跳过重复

i,j两个指针分别指向第i个和第i+1个元素,比较,相等j后移,直到不等将第i个元素加到新列表。j赋给i,开始下一次循环即可。

该方法时间复杂度由于解法2,毕竟解法二中的in判断也是一种遍历。

def uniqList03(data=None):
    data = sorted(data)
    newdata = []
    stop = len(data) - 1
    i = 0
    while i <= stop:
        j = i + 1
        if i == stop:
            newdata.append(data[i])
            i += 1
        else:
            if data[i] == data[j]:
                while j <= stop and data[i] == data[j]:
                    j += 1
            newdata.append(data[i])
            i = j
    return newdata


解法四:

临时变量大法

声明临时变量tmp=data[0], index=0。变量data,如果相等则continue,不相等。将data[index]赋值为tmp,tmp=data[i], index++即可。

该解法空间复杂度为O(1), 时间复杂度为O(N),应该算是最优解了。

def uniqList04(data=None):
    data = sorted(data)
    tmp = data[0]
    index = 0
    for i, v in enumerate(data):
        if tmp == v:
            continue
        else:
            data[index] = tmp
            tmp = v
            index += 1
    data[index] = tmp  # 在foreach循环中,最后一次的tmp值没有赋给data
    return data[:index+1]  # 因为index从0开始,所以此处加1


--结束END--

本文标题: Python算法题----列表去重

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

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

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

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

下载Word文档
猜你喜欢
  • Python算法题----列表去重
    有这样一个列表[1, 1, 1, 2, 3, 3, 2, 4, 3, 4, 5, 5, 5, 6, 7, 8, 9, 9, 9, 9, 10, 10], 写一个函数,将其重复元素去除。这道题,方法很多的有没有。下面就演示一下茴香豆的四种写法...
    99+
    2023-01-31
    算法 列表 Python
  • Python 列表简单去重
    列表最简单的去重方式list1 = [10, 5, 1, 1, 3, 3, 3, 6, 6, 6] print(set(list1)) print(list((set(list1)))) #不排序 print(sorted(set(lis...
    99+
    2023-01-31
    简单 列表 Python
  • Python算法题----逆序列表
        有这样一个列表[1, 2, 3, 4, 5, 6, 7, 8, 9]编程实现该列表逆序排列,将其变为[9, 8, 7, 6, 5, 4, 3, 2, 1] 。    题目有了,看看怎么答,逆序排列,只需要将第一个和倒数第一个,第二个...
    99+
    2023-01-31
    逆序 算法 列表
  • Python列表去重的几种方法整理
    请定义函数,将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]中的重复元素除去,写出至少3种方法。 方法一:利用集合去重 ...
    99+
    2022-11-11
  • Python列表去重怎么实现
    可以通过使用set()函数,将列表转换为集合,实现列表去重。例如:lst = [1, 2, 3, 3, 4, 5, 5]new_ls...
    99+
    2023-10-20
    Python
  • 你应该知道的python列表去重方法
    前言 列表去重是写Python脚本时常遇问题,因为不管源数据来自哪里,当我们转换成列表的方式时,有可能预期的结果不是我们最终的结果,最常见的就是列表中元素有重复,这时候第一件事我们就要做去重处理。 我们先来...
    99+
    2022-06-04
    你应该知道 方法 列表
  • Python 使用set()去除列表重复
    一、去除重复元素方法: 1. 对List重复项,可以使用set()去除重复 a = [5, 2, 5, 1, 4, 3, 4,1,0,2,3,8,9,9,9] print(list(set(a))) #将去掉重复的项后,再重新转成lis...
    99+
    2023-01-31
    列表 Python set
  • Python中字符串和列表去重方法总结
    目录字符串去重1、直接遍历字符串的方式2、遍历去重的另一种方式3、将字符串转换成列表的方式(list sort)4、根据字符串下标,判断子集5、使用 ', '.joi...
    99+
    2023-05-15
    Python字符串去重 Python列表去重 Python去重
  • python列表去重的5种常见方法实例
    目录前言一、使用for循环实现列表去重二、使用列表推导式去重三、使用集合转换函数set()实现列表去重四、使用新建字典方式实现列表去重五、删除列表中存在重复的数据附:Python 二...
    99+
    2022-11-11
  • 如何使用python实现列表去重
    小编给大家分享一下如何使用python实现列表去重,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python实现列表去重的方法先...
    99+
    2022-10-19
  • python如何去除列表重复元素
    可以使用set()函数来去除列表中的重复元素,然后再将其转换为列表。例如,假设有一个列表a = [1, 2, 3, 3, 4, 4,...
    99+
    2023-09-20
    python
  • python列表与列表算法详解
    目录1. 序列类型定义2. 列表的基础知识2.1 列表定义2.2 列表基本操作总结1. 序列类型定义 序列是具有先后关系的一组元素 序列是一维元素向量,元素类型可以不同 ...
    99+
    2022-11-12
  • Python中字符串和列表怎么去重
    这篇文章主要介绍“Python中字符串和列表怎么去重”,在日常操作中,相信很多人在Python中字符串和列表怎么去重问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中字符串和列表怎么去重”的疑惑有所...
    99+
    2023-07-05
  • Python中怎么实现列表去重复项
    Python中怎么实现列表去重复项,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方式## 1. 新建列表,如果新列表中不存在,则添加到新列表。 ...
    99+
    2023-06-16
  • 【Python】对字典列表进行去重追加
    [TOC] 目标 现有字典列表 # A = [ {dict1}, {dict2} ] B = [ {dict3}, {dict2} ] C = [ {dict3}, {dict4} ] M = [...
    99+
    2023-01-31
    字典 列表 Python
  • python列表与列表算法详解(2)
    目录2. 案例【三酷猫冒泡法排序】3. 案例【三酷猫二分法查找】总结1. 案例【三酷猫列表记账】 操作需求: (1)用列表对象记录三酷猫每天钓鱼的种类和数量 (2)统计三酷猫所钓...
    99+
    2022-11-12
  • Python实现列表拼接和去重的方法有哪些
    本篇内容主要讲解“Python实现列表拼接和去重的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python实现列表拼接和去重的方法有哪些”吧!目录列表拼接三种方式方式一:简简单单的“...
    99+
    2023-06-20
  • python怎么去除列表中的重复元素
    可以使用set()函数将列表转换为集合,再将集合转换为列表,即可去除列表中的重复元素。具体代码如下:```python# 原始列表l...
    99+
    2023-09-23
    python
  • python如何去除列表中的重复元素
    可以使用set()函数来去除列表中的重复元素。set()函数能够将列表转换为集合,并且集合中不允许有重复元素,然后再将集合转换为列表。具体代码如下:```pythonoriginal_list = [1, 2, 3, 2, 4, 3, ...
    99+
    2023-08-11
    python
  • Python对list列表结构中的值进行去重的方法总结
    今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。 问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。 直观方法 最简单...
    99+
    2022-06-04
    结构 方法 列表
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作