python比较列表所有项是否有相同的部分_检查列表中的所有元素是否相同
一般方法:
def checkEqual1(iterator):
iterator = iter(iterator)
try:
first = next(iterator)
except StopIteration:
return True
return all(first == rest for rest in iterator)
单线:
def checkEqual2(iterator):
return len(set(iterator)) <= 1
还有一条线:
def checkEqual3(lst):
return lst[1:] == lst[:-1]
这三个版本的不同之处在于:
在……里面checkEqual2内容必须是可理解的。
checkEqual1和checkEqual2可以使用任何迭代器,但是checkEqual3必须接受序列输入,通常是具体的容器,如列表或元组。
checkEqual1一旦发现差异就会停止。
自checkEqual1包含更多的Python代码,当许多项在开始时相等时,效率就会降低。
自checkEqual2和checkEqual3始终执行O(N)复制操作,如果大多数输入返回false,则它们将花费更长的时间。
为checkEqual2和checkEqual3很难适应比较a == b到a is b.
timeit结果,对于Python2.7和(只有S1、S4、S7、S9应该返回True)
s1 = [1] * 5000
s2 = [1] * 4999 + [2]
s3 = [2] + [1]*4999
s4 = [set([9])] * 5000
s5 = [set([9])] * 4999 + [set([10])]
s6 = [set([10])] + [set([9])] * 4999
s7 = [1,1]
s8 = [1,2]
s9 = []
我们得到
| checkEqual1 | checkEqual2 | checkEqual3 | checkEqualIvo | checkEqual6502 |
|-----|-------------|-------------|--------------|---------------|----------------|
| s1 | 1.19 msec | 348 usec | 183 usec | 51.6 usec | 121 usec |
| s2 | 1.17 msec | 376 usec | 185 usec | 50.9 usec | 118 usec |
| s3 | 4.17 usec | 348 usec | 120 usec | 264 usec | 61.3 usec |
| | | | | | |
| s4 | 1.73 msec | | 182 usec | 50.5 usec | 121 usec |
| s5 | 1.71 msec | | 181 usec | 50.6 usec | 125 usec |
| s6 | 4.29 usec | | 122 usec | 423 usec | 61.1 usec |
| | | | | | |
| s7 | 3.1 usec | 1.4 usec | 1.24 usec | 0.932 usec | 1.92 usec |
| s8 | 4.07 usec | 1.54 usec | 1.28 usec | 0.997 usec | 1.79 usec |
| s9 | 5.91 usec | 1.25 usec | 0.749 usec | 0.407 usec | 0.386 usec |
注:
# http://stackoverflow.com/q/3844948/
def checkEqualIvo(lst):
return not lst or lst.count(lst[0]) == len(lst)
# http://stackoverflow.com/q/3844931/
def checkEqual6502(lst):
return not lst or [lst[0]]*len(lst) == lst
python比较列表所有项是否有相同的部分_检查列表中的所有元素是否相同相关推荐
- python语言的注释语句引导符不包括什么_以下选项中,哪一个是Python语言中代码注释使用的符号?________...
[单选题]关于 Python 语句 P = –P,以下选项中描述正确的是________ [多选题]Python的数字类型包括( ) [多选题]Python中的注释符有哪几种?( ) [判断题]已知 ...
- python使用如下方法规范化数组_python – 根据数组的符号将数组中列的元素规范化为1或-1...
我想将数组'x'中包含正数和负数的列的元素规范化为-1或1. x的负元素应归一化为每列的x.min,其中x.min变为-1,x的正元素应归一化为x.max变为1的每列的x.max.零值应保持为零. 我 ...
- python判断字符串是否包含大写字母_检查字符串中是否存在大写字母
可以将any与生成器一起使用,以测试字符串是否包含大写字母testString = "abjKcf" print(any(x.isupper() for x in testStri ...
- C语言检查列表是否是回文的算法(附完整源码)
C语言检查列表是否是回文的算法 C语言检查列表是否是回文的算法完整源码(定义,实现,main函数测试) C语言检查列表是否是回文的算法完整源码(定义,实现,main函数测试) #include < ...
- python列表大小限制_Python中列表的项数有限制吗?
Python中列表的项数有限制吗? 关注:172 答案:1 mip版 解决时间 2021-01-13 18:03 已解决 2021-01-12 21:29 我在尝试生成一个900个项,每个项是包含 ...
- python查找列表重复项_python – 在列表中查找项目和重复项
我正在使用 Python并考虑以下问题:给出一个列表,例如[1,0,-2,0,0,4,5,0,3]多次包含0的整数,我希望有这些0和每一个的索引是它出现在列表中的次数,直到出现不同的元素或列表结束. ...
- python删除列表中的重复元素并保持相对顺序不变
python删除列表中的重复元素并保持相对顺序不变 从列表中删除重复项以便所有元素都是唯一的同时保持原有相对顺序不变 对于列表我们可以使用如下方法: l1 = [1,7,7,8,5,5,4] l2 = ...
- 【Python算法】哈希存储、哈希表、散列表原理
哈希表的定义: 哈希存储的基本思想是以关键字Key为自变量,通过一定的函数关系(散列函数或哈希函数),计算出对应的函数值(哈希地址),以这个值作为数据元素的地址,并将数据元素存入到相应地址的存储单元中 ...
- 使用sortable插件实现列表中表项的拖曳排序操作8-3
2019独角兽企业重金招聘Python工程师标准>>> sortable 参数说明:http://blog.csdn.net/xpsharp/article/details/6906 ...
最新文章
- ArcGIS Engine中的8种数据访问【转】
- MATLAB 数组运算
- failover.mysql_mysqlfailover测试
- JSR 310新日期/时间API的自定义JSR 303 Bean验证约束
- 西门子rwd60参数设置调试手册_RWD60 RWD68 RWD62西门子温控器调试说明指导
- 武汉大学c语言实验报告模板,武汉大学C语言程序设计第3讲(2012级).ppt
- 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(九)NagVis安装
- TensorRT 环境搭建记录
- SQL Server 获取日期是星期周几(默认从周日开始到周六 1-7)
- Power of Four(Leetcode 342)
- tar 打包解压参数详解
- 复旦MBAer聊“进博”:希望已至,寻路未来!
- grub4dos linux 设备,解决方案:在Grub4Dos硬盘上安装Fedora / CentOS Linux操作系统
- 论文阅读:SPR:Supervised Personalized Ranking Based on Prior Knowledge for Recommendation
- 30_Python基础_异常
- 2021-03-22 unI-app 前端直播推流实现
- 【致敬世界杯】球迷(我)和足球的故事
- 关于js表格固定列实现
- win10一按右键就闪屏_六种方法教你如何解决win10笔记本屏幕闪烁问题?
- oppo手机怎么查计算机记录,oppo怎样查通话记录(oppo手机怎么查以前的通话记录)...
热门文章
- aix和linux脚本,AIX系统资源监控SHELL脚本
- python类属性初始化_Python:如何模拟类属性初始化函数
- bilibili在线解析接口_SpringBoot+Gradle+MyBatisPlus3.x + Swagger搭建在线和离线API
- [蓝桥杯]算法提高 金属采集(树形dp)
- Sequence II HDU - 5919(主席树)
- java web 全局_JavaWeb - 【Listener】初始化全局资源
- 如何防止token被拦截_Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等
- 北邮dsp matlab实验,北京邮电大学《数字信号处理》门爱东-DSP实验.pdf
- java button不显示_这段JAVA程序怎么不显示button等控件啊
- cmake 找不到 macros_愿我们在彼此看不到的岁月里熠熠生辉