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的lambda匿名函数的简单介绍
Apr 25 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
python 实现rolling和apply函数的向下取值操作
Jun 08 Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 Python
python新手学习可变和不可变对象
Jun 11 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 #Python
2021年pycharm的最新安装教程及基本使用图文详解
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
python 统计代码耗时的几种方法分享
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
You might like
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
python中的错误如何查看
2020/07/08 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
一份Java笔试题
2012/02/21 面试题
采购内勤岗位职责
2013/12/10 职场文书
财务出纳岗位职责
2014/02/03 职场文书
感恩教师节主题班会
2015/08/12 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python