千家信息网

python中怎么对列表元素去重并保持原有顺序

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家介绍python中怎么对列表元素去重并保持原有顺序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。这个需求涉及到集合,上代码前先讲讲集合。讲集合前我们先回顾一下可变数
千家信息网最后更新 2026年11月01日python中怎么对列表元素去重并保持原有顺序

这篇文章给大家介绍python中怎么对列表元素去重并保持原有顺序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

这个需求涉及到集合,上代码前先讲讲集合。讲集合前我们先回顾一下可变数据类型和不可变数据类型。

  • 不可变数据类型:数字number(含int、float、bool、complex)、字符串string、元组tuple。

  • 可变数据类型:列表list、字典dict、集合set。

集合的存取是基于hash算法映射,只有不可变数据类型才能做hash算法,所以集合中只能存放不可变数据类型。集合的特性是去重、无序。学集合时最先接触的是交并差,每一本教python的书讲到集合都不会漏讲交并差,这里就不赘述了。

那么现在,我们需要将一个列表中的元素去重并保持原有顺序。最优解是什么?

还是直接上代码看案例吧:

raw_address = ['北京市', '北京市', '昌平区', '人民大街', '9999号']  # 客户自行录入的原始地址信息# 数据库中的地址信息是'北京市昌平区人民大街9999号',如何将客户录入的地址信息与数据库中的地址信息进行匹配?address = list(set(raw_address))  # 对原始地址list先转成集合再转成列表,自动完成去重print(address)  # 输出的是['人民大街', '昌平区', '9999号', '北京市']address.sort(key=raw_address.index)  # 再对去重后的列表按原始顺序排列print(address)  # 输出的是['北京市', '昌平区', '人民大街', '9999号']

可以看到用python对列表中的元素去重并保持原始的顺序只要2行代码即可完成,运行速度也相当高。

这背后是什么原理呢?

这是因为在python中变量实质是一种引用,上述案例中raw_address列表有5条字符串,分别存储在内存不同的地址。rad_address列表中保存了5条字符串的内存地址,在去重的时候不需要对列表中的字符串两两匹配是否有重复(这种运算相当耗时),只要检测是否存在相同的内存地址引用,去掉重复的引用只保留一条即可迅速去重。在还原顺序的时候只要根据原列表的元素索引排序即可。

关于python中怎么对列表元素去重并保持原有顺序就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

地址 数据 顺序 类型 可变 元素 北京 北京市 原始 人民 信息 大街 字符 字符串 昌平 昌平区 内存 代码 内容 客户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 西安纸贵互联网科技有限公司 科技互联网企业 互联网 科技创新 中国 科技 互联网 美国互联网科技 紫鲸互联网科技 华中科技大学互联网 碳银互联网科技有限公司 科技互联网创业计划书 互联网科技股午盘股票涨跌 互联网系的金融科技公司 互联网金融科技公司干啥的 乌苏新华互联网科技做什么的 保险科技服务互联网营销体系 互联网科技融合创新 中国新注册互联网科技 陕西九四连强互联网科技有限公司 绵阳真晨互联网科技有限公司 北京品多多互联网科技有限公司 没上市的科技互联网公司 狮子座互联网科技培训 互联网科技博客 北京华百购互联网科技有限公司 互联网科技创新服务 互联网经济与金融科技 互联网媒体平台算高科技产业 互联网科技圈年度人物 卡尔迅互联网科技有限公司 科技互联网公司两年变化
0