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 相关文章推荐
Python3基础之条件与循环控制实例解析
Aug 13 Python
python中list列表的高级函数
May 17 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
Python检测网络延迟的代码
May 15 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 Python
Python使用xpath实现图片爬取
Sep 16 Python
Python如何解决secure_filename对中文不支持问题
Jul 16 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/04/10 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
python如何通过protobuf实现rpc
2016/03/06 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
谈谈python中GUI的选择
2018/03/01 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
python 实现端口扫描工具
2020/12/18 Python
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
跟单文员岗位职责
2014/01/03 职场文书
如何写好自荐信
2014/04/07 职场文书
冬季施工防火方案
2014/05/17 职场文书
护士节慰问信
2015/02/15 职场文书
微信小程序实现轮播图指示器
2022/06/25 Javascript