在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?
问:
a = [1, 2, 3, 1, 2, 3]
b = [3, 2, 1, 3, 2, 1]
我们需要判断a和b是相等的,因为他们有同样的元素,尽管他们的顺序不同。
但是实际情况是,list会按照顺序比对内部元素,该如何解决?
答:
O(n)复杂度: 如果内部的对象是可hash的,那么Collections下的Counter方法是最好的。
from collections import Counter
def compare(s, t):return Counter(s) == Counter(t)
O(nlogn)复杂度:如果对象可以排序,那么sorted()方法是次优的。
def compare(s, t):return sorted(s) == sorted(t)
O(n*n)复杂度:如果对象既不可以hash又无法排序,我们可以使用以下方法:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def compare(s, t):t = list(t) # make a mutable copytry:for elem in s:t.remove(elem)except ValueError:return Falsereturn not t
在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?相关推荐
- python自带的shell是什么-python中执行shell的两种方法总结
一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...
- python中一个星号(*)与两个星号(**)的作用
python中一个星号(*)与两个星号(**)的作用 目录 python中一个星号(`*`)与两个星号(`**`)的作用 一.一般用法 概述: 1.`*`表示乘法,`**`表示幂 2.`*`表示打包解 ...
- 站长在线Python精讲:在Python中格式化字符串的两种方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...
- python中的or的两种用法
python中的or的两种用法 python中or除了常见的和and作为判断的条件外,还有一种不多见但很实用的用法,那就是: a = b or c 在这条赋值语句中的 or 的含义是判断 b 和 c ...
- 在python中创建一个具有特定大小的空列表
本文翻译自:Create an empty list in python with certain size I want to create an empty list (or whatever i ...
- Python中的除法保留两位小数
在C/C++语言对于整形数执行除法会进行地板除(舍去小数部分).例如 int a=15/10; a的结果为1. 同样的在Java中也是如此,所以两个int型的数据相除需要返回一个浮点型数据的时候就需要 ...
- python中输入直角三角形的两个直角边a,b求斜边c的长度
我们需要在控制台输入a,b的值,而在Python中我们求一个数的开根号则需要用到幂 a=int(input("请输入a")) b=int(input("请输入b" ...
- python中init方法的两个下划线_为什么Python中有各种各样的“_”下划线?分别有什么用?...
刚开始学Python的你一定很疑惑,为什么Python里会出现各种各样的下划线 "_",而且位置都不相同,有时候在名称后面,有时候在前面,有时候还会在数字中间......这些下划线 ...
- python中的pandas的两种基本使用_Python:Pandas的基本操作和使用
Pandas整体内容概要 本文整体介绍 Pands的数据结构 Pands的读取与保存 数据的基本操作:数据的查看.检查.选择.删减.填充 数据的处理:合并.聚合.分组.filter.sort.grou ...
最新文章
- python day two,while
- 马云缺席的一个半小时,李彦宏和马化腾都聊了什么
- c++ 读文件_第十六节:读文件,文件的创建,写文件,文件的读写以及鼠标键盘事件和图形绘制...
- 洛谷P3270:成绩比较(容斥、组合数学)
- [html] 写页面布局时需要考虑哪些方面的因素?
- 在部署 C#项目时转换 App.config 配置文件
- 分析容灾备份建设需求
- Flask常见问题记录
- 活动目录操作主机(FSMO)角色详解
- AD DS 域控与成员计算机的时间一致性
- matlab 离散系统稳定性,基于LMI的离散系统非脆弱H∞滤波器设计(Matlab,程序)
- java字节码查看器_jclasslib 下载
- 空间解析几何与向量代数
- 印章仿制工具_仿制图章工具怎么用
- java商城如何防止超卖_电商中怎么防止超卖
- 三角函数中的和差化积公式编辑方法
- Opencv实现颜色检测
- warframe在路由器上添加虚拟服务器,卡结算warframe方法
- Java版开源的端口映射工具
- 多智能体强化学习入门(七)——AC for CDec-POMDP 大规模规划学习算法
热门文章
- 《Adobe Illustrator CS4中文版经典教程》—第0课0.11节将外观属性存储为图形样式...
- Mpg123源代码详解
- ASP.NET MVC的Action拦截器(过滤器)ActionFilter
- portal开发下拉框“日期框”查询要怎么配置
- ShowAllPic--图片
- Java学习资料-SimpleFactory
- 现代控制理论第八版第二章读书笔记
- 在JSP中如何或得当前绝对路径
- 解决TreeView中使用JavaScript完成CheckBox全选的办法
- android 恶意广告,CheckPoint:Android恶意广告软件SimBad被下载近1.5亿次