写一个函数实现如下功能: 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.写一个函数实现如下功能:

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.小白一枚,如有不对之处,欢迎指正^-^

原文地址:https://www.cnblogs.com/muzii/p/14085638.html