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、java等哪一门编程语言适合人工智能?
Nov 13 Python
详解Python自建logging模块
Jan 29 Python
python list元素为tuple时的排序方法
Apr 18 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
浅谈flask源码之请求过程
Jul 26 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
python设置环境变量的作用整理
Feb 17 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
Python如何读写CSV文件
Aug 13 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
Python经常使用的一些内置函数
Apr 11 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
用缓存实现静态页面的测试
2006/12/06 PHP
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
Python中实现单例模式的n种方式和原理
2018/11/14 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
行政部经理助理岗位职责
2014/06/15 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
公司开除员工通知
2015/04/22 职场文书
办公经费申请报告
2015/05/15 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL