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下的Mysql模块MySQLdb安装详解
Apr 09 Python
在Python的Django框架下使用django-tagging的教程
May 30 Python
简单了解python代码优化小技巧
Jul 08 Python
sklearn-SVC实现与类参数详解
Dec 10 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
如何给Python代码进行加密
Jan 10 Python
python实现图像拼接功能
Mar 23 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
如何基于python实现年会抽奖工具
Oct 20 Python
Python控制鼠标键盘代码实例
Dec 08 Python
如何使用Python实现一个简易的ORM模型
May 12 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
js实现for循环跳过undefined值示例
2019/07/02 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python获取当前时间的方法
2014/01/14 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python判断直线和矩形是否相交的方法
2015/07/14 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python多进程写入同一文件的方法
2019/01/14 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python logging设置和logger解析
2019/08/28 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
static关键字的用法
2013/10/07 面试题
幼儿教育感言
2014/02/05 职场文书
创优争先心得体会
2014/09/11 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
中英文求职信范文
2015/03/19 职场文书
什么是SOLID
2022/03/24 Javascript