网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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


文章标题:python中怎么对列表元素去重并保持原有顺序
文章源于:http://bjjierui.cn/article/jeodhj.html

其他资讯