Python list去重且保持原顺序不变的方法


Posted in Python onApril 03, 2021

背景

python 去重一顿操作猛如虎,set list 扒拉下去,就去重了,但是顺序就打乱了。如果对顺序没有需要的话,这样确实没有什么所谓。
但是如果需要保留顺序的话,就需要一点小小的改变。

code && demo

list 去重,顺序乱掉

# normal 写法
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
print(l2)

# plus 写法
l1 = ['b','c','d','b','c','a','a']
l2 = {}.fromkeys(l1).keys()

去重后还是原 list 顺序

# normal 写法
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)

# plus 写法
l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)

写循环代码实现

# normal 写法
l1 = ['b','c','d','b','c','a','a']
l2 = []
for i in l1:
  if not i in l2:
    l2.append(i)
    
# plus 写法

l1 = ['b','c','d','b','c','a','a']
l2 = []
[l2.append(i) for i in l1 if not i in l2]

写 while 循环代码实现

L = [3, 1, 2, 1, 3, 4]
T = L[:]
for i in L:
  while T.count(i) > 1:
    del T[T.index(i)]
T.sort(key=L.index)

lambda 写法

备注:

  • ambda L,i: L if i in L else L + [i]    # 如果元素在列表中,那么返回列表本身,不在的话 L + [i]
  • [[],] + L # 等价于 [[], L],方便后面计算

总结

如果纠结空间复杂度的,用 python 干啥?
先谈能不能完成,再谈优化吧。

以上就是Python list去重且保持原顺序不变的方法的详细内容,更多关于Python list去重的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 变量类型及命名规则介绍
Jun 08 Python
Python sys.path详细介绍
Oct 17 Python
Python数据类型学习笔记
Jan 13 Python
python ddt数据驱动最简实例代码
Feb 22 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
python处理document文档保留原样式
Sep 23 Python
Django实现文件上传下载功能
Oct 06 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
利用Pytorch实现简单的线性回归算法
Jan 15 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
pytorch查看模型weight与grad方式
Jun 24 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
php学习之运算符相关概念
2011/06/09 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
vue实现评价星星功能
2020/06/30 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python列表返回重复数据的下标
2020/02/10 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
python怎么对数字进行过滤
2020/07/05 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
职业女性的职业规划
2014/03/04 职场文书
销售会计岗位职责
2014/03/15 职场文书
基层党员对照检查材料
2014/09/24 职场文书
2014年班级工作总结
2014/11/14 职场文书
2014年底工作总结
2014/12/15 职场文书