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 fabric实现远程操作和部署示例
Mar 25 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
Python反射的用法实例分析
Feb 11 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 Python
Python 数据科学 Matplotlib图库详解
Jul 07 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php adodb操作mysql数据库
2009/03/19 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
Python实现Dijkstra算法
2018/10/17 Python
python圣诞树编写实例详解
2020/02/13 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
Hibernate持久层技术
2013/12/16 面试题
求职信模板怎么做
2014/01/26 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
行政处罚事先告知书
2015/07/01 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP