Python实现比较两个列表(list)范围

Python实现比较两个列表(list)范围

有一道题: 比较两个列表范围,如果包含的话,返回TRUE,否则FALSE。 详细题目如下:

Create a function, this function receives two lists as parameters, each list indicates a scope of numbers, the function judges whether list2 is included in list1.

Function signature:
    differ_scope(list1, list2)

Parameters:
    list1, list2    - list1 and list2 are constructed with strings,
                      each string indicates a number or a scope of
                      numbers. The number or scope are randomly, can
                      be overlapped. All numbers are positive.

E.g.
                            ['23', '44-67', '12', '3', '20-90']
 Return Values:
    True            - if all scopes and numbers indicated by list2 are included in list1.
    False           - if any scope or number in list2 is out of the range in list1.
 Examples:
    case1    - list1 = ['23', '44-67', '12', '3', '20-90']
               list2 = ['22-34', '33', 45', '60-61']
               differ_scope(list1, list2) == True
    case2    - list1 = ['23', '44-67', '12', '3', '20-90']
               list2 = ['22-34', '33', 45', '60-61', '100']
               differ_scope(list1, list2) == False

贴上自己写的代码如下:(备注: python 2.7.6)

defdiffer_scope(list1, list2):
print"list1:" str(list1)
print"list2:" str(list2)
#设置临时存放列表
list1_not_=[]#用于存放列表1正常的数字值,当然要用int()来转换
list1_yes_=[]#用于存放列表1中范围值如 44-67
list1_final=[]#用于存放列表1中最终范围值 如:[1,2,3,4,5,6,7,8,9,10]
temp1   =[]
list2_not_=[] #用于存放列表2正常的数字值,当然要用int()来转换
list2_yes_=[] #用于存放列表2中范围值如 44-67
list2_final=[] #用于存放列表2中最终范围值 如:[1,2,3,4,5,6,7,8,9,10]
temp2  =[]
temp   =[] #用于存放列表1,与列表2比较后的列表,从而判断结果为True还是False.
#对列表1进行处理
foriinrange(len(list1)):#用FOR循环对列表1进行遍历
tag=0
iflist1[i].find('-')>0:#对含范围的数字进行处理,放到list_yes_列表中 
strlist=list1[i].split('-')
list1_yes_=range(int(strlist[0]),int(strlist[1]) 1)#让其生成一个范围列表
foreachinlist1_yes_:    #FOR循环遍历所有符合条件的.
[temp1.append(each)]
else:          #对列表1中正常的数字进行处理,放到list_not_列表中
list1_not_.append(int(list1[i]))#对列表1中进行处理,放到list_yes_   
[temp1.append(i)foriinlist1_not_ifnotiintemp1]#去除重复项
list1_final=sorted(temp1)#比较后,排序,并放到list1_final列表中
print"list1_final value is:" str(list1_final)#打印排序后最终list1_final列表
#对列表2进行处理
foriinrange(len(list2)):
iflist2[i].find('-')>0:
strlist=list2[i].split('-')
list2_yes_=range(int(strlist[0]),int(strlist[1]) 1)
foreachinlist2_yes_:
[temp2.append(each)]
print"Temp2:" str(temp2)
else:
list2_not_.append(int(list2[i]))
[temp2.append(i)foriinlist2_not_ifnotiintemp2]
list2_final=sorted(temp2)
print"list2_final value is:" str(list2_final)
#对两个列表进行比较,得出最终比较结果.
[temp.append(i)foriinlist2_finalifnotiinlist1_final]#比较两个列表差值.
print"In list2 but not in list1:%s"%(temp)#打印出列表1与列表2的差值
iflen(temp)>=1:
print"The result is: False"
else:
print"The result is: True"
if__name__=='__main__':
list1=['23','44-67','12','3','90-100']
list2=['22-34','33','45']
differ_scope(list1,list2)
总结:
1. 这道题关键是想法,如果整成坐标的方式来比较,会很麻烦。
2. 列表转成范围后,如果消除重复项,同样是里面的关键所在。
3. 其次是对列表遍历的操作,同样挺重要。

转载于:https://www.cnblogs.com/amengduo/p/9586505.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机里面的CPU使用率是什么鬼?

打开电脑的任务管理器,看着跳动的CPU使用率,发现很舒服。每一个线程占用了多少CPU清清楚楚,也就能针对性的确认为啥你的电脑跑的慢了。今天这篇笔记不讲每个任务(或线程)CPU的使用情况,而是单片机整体的CPU…

图解,C语言希尔排序

希尔排序和插入排序很相似,有点像插入排序的升级版本。希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序&…

TQ210——S5PV210串口通信

TQ210——S5PV210串口通信 1、 串行与并行通信 串行通道中,有效信息被编码后串行的从单根传输线上传送出去。譬如发送ASCII字符’a’,我们可以将’a’对应的ASCII码97(0x61)分作8个bit在传输线上顺序依次传输。 与串行传输相对应…

暴力字符匹配算法的C语言实现

1、聊一聊今天跟大家分享的这个曲子一般是在天气预报和英语试听中出现,不信你听一听绝对有种似曾相识感觉。本篇文章主要是为讲解高效字符匹配算法的一则预告文,跟大家讲讲暴力字符匹配算法以及匹配算法在通信中如何使用。2、暴力匹配算法介绍1聊聊字符匹…

TQ210 —— LCD

TQ210 —— LCD一、LCD控制器1、S5PV210 LCD控制器要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是…

微信表情都戒烟了

昨天看到最新的微信表情是这样的原来的抽烟表情被替换成了这释放出一个信号,就是「抽烟不酷了」不过我想说,只戴着一个绿帽子,嘴巴里面什么都没有,好像也不酷啊。难道重点就是那个墨镜?????不过,在PC版…

Python 类的属性和实例属性 Python 的动态语言

#定义一下类, 含有类属性 aaa, >>> class Aa: ... aaa 10... #对类 Aa实例化出一个实例 a1>>> a1 Aa() >>> print(a1.__dict__)#查看实例并没有自己的方法和属性{}>>> a1.aaa #但是这个实例在调用属性的时候, 发现自己没有这个属性, 于…

高效KMP字符匹配算法就这么简单

1、聊一聊上一篇文章"暴力"字符匹配算法的C语言实现2、KMP算法介绍1KMP介绍KMP是一种字符匹配算法,为啥叫KMP呢?因为是由D.E.Knuth,J.H.Morris和V.R.Pratt大佬提出来的。那一些小伙伴会问了怎么不叫"DJV算法"呢?因为老外…

TQ210 —— NandFlash

TQ210 —— nandflashTQ210 开发板板载一片 1Gbyte 的 NAND FLASH——K9K8G08U0B,通过查询K9K8G08U0B 芯片手册可以得到如下信息:(理论知识不再介绍)K9K8G08U0B : (1G 32M) x 8bit 总大小Data Register : (2K 64) x 8bit 数据寄…

涂鸦赞助的500个开发套件,先到先得

来源 | 涂鸦跟涂鸦申请的福利,给喜欢开发的同学发放开发套件,只要是不是专门白嫖党,数量可以不做限制。去年疫情突发,封城、封小区以及人员隔离,让原本享受千般宠爱的主子们变成了靠吃猫砂、塑料袋度日的小可怜&#x…

Linux-C 编程 / 网络 / 超迷你的 web server

一、为生活寻找固定的支撑点1. 什么是生活的支撑点?让自己感到些许痛苦,但却会带来实实在在的充实感和成就感的事情。举个栗子,我的支点是运动、看书、研究技术。2. 固定的支撑点很重要:三个固定的要素:时间 / 空间 / …

20165326 java第四周学习笔记

第四周学习笔记 ch5 子类和父类子类只能有一个父类使用关键字extendsyclass 子类 extends 父类系统默认的祖先类Object(java.lang包中)继承:子类继承父类的方法可以直接作为实例方法调用,继承的成员变量和方法的访问权限不变&…

用VSTS进行网站压力测试

VSTS提供了一个丰富、强大的工具平台,融合了软件开发领域的各个角色,涵盖软件开发生命周期的各个阶段,包括设计,开发,测试,管理,而这一整套构件的融会贯通,让它可以有效地改善软件开…

第四周选做作业

相关知识点的总结 通过命令行引入参数递归循环课上内容的补做,结果截图 未完成内容:递归与循环 补做教材第二章,第三章编程题目 参考资料 2016-2017-2 《Java 程序设计》课堂实践项目编写一个Java应用程序,输出全部的希腊字母。_百度知道[]转载于:https:…

数据结构和算法,也就那么回事儿

金三银四来了,各大厂动静不小,都在储备人才,绝对是程序员面试的黄金时间了,不少同学也在后台反馈面试中遇到的一些问题,所以今天想跟大家说说算法。说起算法,那大厂面试是绝对必考的,可以说是一…

SecureCRT护眼设置

SecureCRT护眼设置Option —— Global Options —— Terminal —— Appearance —— ANSI COlor从左至右,从上至下值分别为(RGB元组): 1:(0,43,53) (128,128,0) (0,160,0) (160,160,0) (255,128,128) (…

北美暴风雨,Linux5.12被延迟6天发布

上个月中旬,因为罕见的严寒天气和暴风雪,美国得州和俄勒冈州波特兰遭遇了持续多天的停电。Linux 创始人 Linus Torvalds 就生活在波特兰,多年来他一直在家中远程工作,并负责新内核的最终发布。之前我们报道过,内核社区…

C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)

可空值类型 C#2推出可空类型来表示可以为null的值类型。这是一个呼声很高的需求,因为在常用的数据库中都是允许某些值类型可为空的。那么为什么值类型就不能为空呢?内存中用一个全0的值来表示null,但是全0的地址说明了这个内存空间是被清除了…

ISA之三种客户端访问

我们已经懂得怎么搭建ISA2006.我们今天来利用ISA访问外网!顺便说声如果你IP,网关,DNS什么都没问题。那么你可以看看你的NAT处理!下面我们看看我们的试验拓扑!我们在ISA的服务器上做访问规则!来允许我们可以…

面试官不讲武德,居然让我讲讲蠕虫和金丝雀!

1. 蠕虫病毒简介2. 缓冲区溢出3. 缓冲区溢出举例4. 缓冲区溢出的危害5. 内存在计算机中的排布方式6. 计算机中越界访问的后果7. 避免缓冲区溢出的三种方法7.1 栈随机化7.2 检测栈是否被破坏7.3 限制可执行代码区域8. 总结蠕虫病毒是一种常见的利用Unix系统中的缺点来进行攻击的…