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 内置字符串处理函数的使用方法
Jun 11 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
你真的了解Python的random模块吗?
Dec 12 Python
python使用正则筛选信用卡
Jan 27 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
keras .h5转移动端的.tflite文件实现方式
May 25 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
Python 实现一个简单的web服务器
Jan 03 Python
OpenCV全景图像拼接的实现示例
Jun 05 Python
Python集合set()使用的方法详解
Mar 18 Python
python数字图像处理:图像简单滤波
Jun 28 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
对盗链说再见...
2006/10/09 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Pandas的Apply函数具体使用
2020/07/21 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
经典c++面试题六
2012/01/18 面试题
报关报检委托书
2014/04/08 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
大一学生个人总结
2015/02/15 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
标准发言稿结尾
2019/07/18 职场文书
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis