练习题:
1.写一个函数实现如下功能:
1)输入数组:[0,1,2,3,5,6,8] ==>
输出数组:[“0->3”,”5->6”,”8”]
2)输入数组:[1,2,4,5,6,7,9]==>
输出数组:['1->2','4->7','9']
分析:
1.连续数字输出为n->m
2.需要考虑列表中所有数字都为连续数字
3.列表中最后一个数字为单数
4.列表中两个连续相同的数字
def getSerialize(list): list2 = [] #定义一个空列表,用于存放返回数据 num1 = list[0] #定义一个变量,默认为list的第一个数 num2 = 0 for i in range(1,len(list)): #遍历列表 print((list[i]-list[i-1])) if list[i]-list[i-1] != 1: #判断数字是否为连续数 num2 = list[i-1] #如果不是连续数,将list[i-1] 赋值给num2 if num2 != num1: #判断num1与num2是否相等 str1 = str(num1) + '->' +str(num2) #如果不相等则将'num1->num2'赋值给str1 list2.append(str1) #添加str1到list2中 num1 = list[i] else: str1 = str(list[i-1]) #如果num1与num2相等,则说明list[i-1]为单数 list2.append(str1) num1 = list[i] if i == len(list)-1: #判断i是否为列表的最后一个脚标,如果是并且list[i]为单数则str1=list[i] str1 = str(list[i]) list2.append(str1) else: if num1 != list[len(list)-1]: #判断num1是否与list中的最后一个数相等,如果不相等则输出'num1->list[len(list)-1]' str1=str(num1) + '->' + str(list[len(list)-1]) list2.append(str1) return list2
PS.小白一枚,如有不对之处,欢迎指正^-^