python中怎么对列表元素去重并保持原有顺序
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家介绍python中怎么对列表元素去重并保持原有顺序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。这个需求涉及到集合,上代码前先讲讲集合。讲集合前我们先回顾一下可变数
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
县医院网络安全管理责任书
怎么看淘宝商家数据库
广州停车系统软件开发定制
软件开发估计流程
icloud服务器地址
科奥科技有限公司互联网
同时50个用户访问文件 服务器
云数据库技术支持
预测药物靶点的数据库
株洲网络安全学习白盒测试
万方数据库的检索词
v2rayNg启动服务器失败
更新民营企业数据库
药学中ad数据库
数据库重启的时候显示无效
地下城与勇士新服务器出现异常
数据库密文索引技术
软件开发和测试工作的区别
wps有没有数据库
福建安卓软件开发价格
内网文件共享服务器管理软件
数据库参考文献例子
网络安全从本质上
美洲新世界最新服务器
测试小学生网络安全
金蝶加密服务器管理
电脑内存卡能插入服务器吗
贵阳服务器备份一体机厂家
如何管理自己的服务器不被炸掉
办公室网络服务器管理员