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 正则表达式操作指南
May 04 Python
Python深入学习之特殊方法与多范式
Aug 31 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
Python实现文件按照日期命名的方法
Jul 09 Python
python中OrderedDict的使用方法详解
May 05 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
python matplotlib实现将图例放在图外
Apr 17 Python
next在python中返回迭代器的实例方法
Dec 15 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
Smarty安装配置方法
2008/04/10 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
详解Python使用tensorflow入门指南
2018/02/09 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
Pycharm Git 设置方法
2020/09/15 Python
经典婚礼主持词
2014/03/13 职场文书
党支部换届选举方案
2014/05/08 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
文明单位创建材料
2014/12/24 职场文书
职工培训工作总结
2015/08/10 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
mysql数据库入门第一步之创建表
2021/05/14 MySQL
java设计模式--七大原则详解
2021/07/21 Java/Android
python开发人人对战的五子棋小游戏
2022/05/02 Python