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 相关文章推荐
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
Python Requests 基础入门
Apr 07 Python
Python检测网络延迟的代码
May 15 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
python线程join方法原理解析
Feb 11 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
Python实现列表拼接和去重的三种方式
Jul 02 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
php中stdClass的用法分析
2015/02/27 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
Vue多系统切换实现方案
2018/06/05 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
八大排序算法的Python实现
2021/01/28 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python实现EM算法实例代码
2020/10/04 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
大四学年自我鉴定
2013/11/13 职场文书
补充协议书范本
2014/04/23 职场文书
关键在于落实心得体会
2014/09/03 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
2014年科室工作总结
2014/11/20 职场文书
师德师风个人总结
2015/02/06 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
离职告别感言
2015/08/04 职场文书