你应该知道的python列表去重方法

发布时间 - 2026-01-10 22:34:04    点击率:

前言

列表去重是写Python脚本时常遇问题,因为不管源数据来自哪里,当我们转换成列表的方式时,有可能预期的结果不是我们最终的结果,最常见的就是列表中元素有重复,这时候第一件事我们就要做去重处理。

我们先来个最简单的方式,用python内置的数据类型set来实现。

假设我们的列表数据是这样的:

level_names = [
 u'Second Level',
 u'Second Level',
 u'Second Level',
 u'First Level',
 u'First Level'
]

因为集合的元素是不能重复的,所以将列表转换成集合时,会自动去掉重复的元素,这就是基本原理,代码如下:

>>> the_list = set(level_names)
>>> print(the_list)
set([u'Second Level', u'First Level'])

这种方式缺点是再转换成列表时无法保存之前的列表顺序,如果没这个要求,这种方式是最简答的, 也许有的小伙伴觉得好简单呀,这没什么技术含量吗,没错,所以一般面试题里让你列表去重一般会这么写:

请写出列表去重的方法(不能用set)

人家写明不能用set了,所以呢,这招有时候还不能用,那当然也难不倒我们,我们还有其他方法。

我们都知道列表可以遍历,能遍历问题也就简单了,我们再定义空列表,然后遍历有数据的列表,再遍历时加一个判断,如果在空列表里没有,就加进去,如果有了就丢掉,代码如下:

the_list = []
for level in level_names:
 if level not in the_list:
  the_list.append(level)
print(the_list)

大家觉得这种方式是不是还可以,但这种方式对付一般的小列表是没问题的,但如果遇到一个超级大列表,也会力不从心,因为在the_list列表变的非常大,在判断时候会影响效率,因为列表是按索引顺序去查找的,当数据量很大时会变慢。

也许你要问了,那我遇到大的列表咋办? 有更牛掰点的方法吗?当然有,让我们继续,既然在判断时用列表会影响效率,那我们就转换一个思路,我们用集合,那你可能要问了,那集合就快了?没错,因为set使用的hash函数查找值,虽然set无序,但位置是固定的,只需一次就可以查到特定元素是否存在,网上有人做了列表和set的元素查找对比,相同的数据条件下,用list耗时16分钟,用set耗时是52秒,这一对比看出效果了吧,别的不多说了,贴代码:

the_list = []
the_set = set()
for level in level_names:
 if level not in the_set:
  the_set.add(level)
  the_list.append(level)
print(the_list)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# python  # list  # 列表去重  # 对象列表去重  # python3  # python列表去重的5种常见方法实例  # Python列表去重复项的N种方法(实例代码)  # Python 列表去重去除空字符的例子  # 对python列表里的字典元素去重方法详解  # Python对列表去重的多种方法(四种方法)  # python列表去重的二种方法  # Python列表去重的几种方法整理  # 遍历  # 转换成  # 中元  # 不能用  # 这一  # 让你  # 也会  # 还可以  # 让我们  # 也就  # 你要  # 有可能  # 是这样  # 这就是  # 说了  # 还不  # 不多  # 只需  # 那你  # 那我 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  微信小程序 input输入框控件详解及实例(多种示例)  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel如何创建自定义Facades?(详细步骤)  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  制作企业网站建设方案,怎样建设一个公司网站?  如何挑选高效建站主机与优质域名?  Android okhttputils现在进度显示实例代码  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何在云主机上快速搭建多站点网站?  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  node.js报错:Cannot find module 'ejs'的解决办法  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  php 三元运算符实例详细介绍  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何快速打造个性化非模板自助建站?  详解jQuery中基本的动画方法  网站建设整体流程解析,建站其实很容易!  微信小程序 canvas开发实例及注意事项  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  制作旅游网站html,怎样注册旅游网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  如何在万网自助建站中设置域名及备案?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速上传建站程序避免常见错误?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  手机网站制作与建设方案,手机网站如何建设?  如何在服务器上配置二级域名建站?  如何快速搭建高效可靠的建站解决方案?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  教你用AI润色文章,让你的文字表达更专业  长沙企业网站制作哪家好,长沙水业集团官方网站?  Android仿QQ列表左滑删除操作  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?