问:

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)?相关推荐

  1. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  2. python中一个星号(*)与两个星号(**)的作用

    python中一个星号(*)与两个星号(**)的作用 目录 python中一个星号(`*`)与两个星号(`**`)的作用 一.一般用法 概述: 1.`*`表示乘法,`**`表示幂 2.`*`表示打包解 ...

  3. 站长在线Python精讲:在Python中格式化字符串的两种方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...

  4. python中的or的两种用法

    python中的or的两种用法 python中or除了常见的和and作为判断的条件外,还有一种不多见但很实用的用法,那就是: a = b or c 在这条赋值语句中的 or 的含义是判断 b 和 c ...

  5. 在python中创建一个具有特定大小的空列表

    本文翻译自:Create an empty list in python with certain size I want to create an empty list (or whatever i ...

  6. Python中的除法保留两位小数

    在C/C++语言对于整形数执行除法会进行地板除(舍去小数部分).例如 int a=15/10; a的结果为1. 同样的在Java中也是如此,所以两个int型的数据相除需要返回一个浮点型数据的时候就需要 ...

  7. python中输入直角三角形的两个直角边a,b求斜边c的长度

    我们需要在控制台输入a,b的值,而在Python中我们求一个数的开根号则需要用到幂 a=int(input("请输入a")) b=int(input("请输入b" ...

  8. python中init方法的两个下划线_为什么Python中有各种各样的“_”下划线?分别有什么用?...

    刚开始学Python的你一定很疑惑,为什么Python里会出现各种各样的下划线 "_",而且位置都不相同,有时候在名称后面,有时候在前面,有时候还会在数字中间......这些下划线 ...

  9. python中的pandas的两种基本使用_Python:Pandas的基本操作和使用

    Pandas整体内容概要 本文整体介绍 Pands的数据结构 Pands的读取与保存 数据的基本操作:数据的查看.检查.选择.删减.填充 数据的处理:合并.聚合.分组.filter.sort.grou ...

最新文章

  1. python day two,while
  2. 马云缺席的一个半小时,李彦宏和马化腾都聊了什么
  3. c++ 读文件_第十六节:读文件,文件的创建,写文件,文件的读写以及鼠标键盘事件和图形绘制...
  4. 洛谷P3270:成绩比较(容斥、组合数学)
  5. [html] 写页面布局时需要考虑哪些方面的因素?
  6. 在部署 C#项目时转换 App.config 配置文件
  7. 分析容灾备份建设需求
  8. Flask常见问题记录
  9. 活动目录操作主机(FSMO)角色详解
  10. AD DS 域控与成员计算机的时间一致性
  11. matlab 离散系统稳定性,基于LMI的离散系统非脆弱H∞滤波器设计(Matlab,程序)
  12. java字节码查看器_jclasslib 下载
  13. 空间解析几何与向量代数
  14. 印章仿制工具_仿制图章工具怎么用
  15. java商城如何防止超卖_电商中怎么防止超卖
  16. 三角函数中的和差化积公式编辑方法
  17. Opencv实现颜色检测
  18. warframe在路由器上添加虚拟服务器,卡结算warframe方法
  19. Java版开源的端口映射工具
  20. 多智能体强化学习入门(七)——AC for CDec-POMDP 大规模规划学习算法

热门文章

  1. 《Adobe Illustrator CS4中文版经典教程》—第0课0.11节将外观属性存储为图形样式...
  2. Mpg123源代码详解
  3. ASP.NET MVC的Action拦截器(过滤器)ActionFilter
  4. portal开发下拉框“日期框”查询要怎么配置
  5. ShowAllPic--图片
  6. Java学习资料-SimpleFactory
  7. 现代控制理论第八版第二章读书笔记
  8. 在JSP中如何或得当前绝对路径
  9. 解决TreeView中使用JavaScript完成CheckBox全选的办法
  10. android 恶意广告,CheckPoint:Android恶意广告软件SimBad被下载近1.5亿次