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正则表达式操作指南(re使用)
Sep 06 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
让Python脚本暂停执行的几种方法(小结)
Jul 11 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
tensorflow模型转ncnn的操作方式
May 25 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
python 制作简单的音乐播放器
Nov 25 Python
详解python的变量缓存机制
Jan 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将数据导入到Foxmail
2006/10/09 PHP
php intval的测试代码发现问题
2008/07/27 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
19个Android常用工具类汇总
2014/12/30 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
js实现登录验证码
2016/12/22 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
Python Trie树实现字典排序
2014/03/28 Python
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
python中比较两个列表的实例方法
2019/07/04 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
详解Python多线程下的list
2020/07/03 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
数据库面试要点基本概念
2013/10/31 面试题
学校志愿者活动总结
2014/06/27 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle