运行编码Python的长度



我遇到的问题是:

编写一个函数,该函数以参数为参数列表,并返回一个列表,以反映该列表的运行长度编码。返回列表中的元素遵循以下模式:偶数索引包含字符,奇数索引包含连续重复字符的次数。命名您的函数RunLengthenCoding(myList)。

例如,runLengthEncoding([aaabbccd])应返回 [a,3,b,2,c,2,d,1]

这是我拥有的,但是我不知道什么问题:

def runLengthEncoding(myList):
    aList = []
    count = 1
    for i in range(0, len(myList)):
        if myList[i] == myList[i - 1]:
            count = count + 1
        else:
            aList.append((count, myList[i - 1]))
            count = 1
        if i == len(myList) - 1:
            aList.append((count, myList[i]))
    return aList

您几乎拥有它,但是有几个必要的更改。调用runLengthEncoding([aaabbccd])将无法使用,因为它将aabbccd称为变量,而不是字符串。如果用引号替换方括号,则将预期的输入作为字符串(在Python中也称为字符列表)。

此外,根据您必须在功能输出的格式上挑剔的情况,您当前正在输出一个元组列表,而不是用计数的字符的直接上升列表。要按照问题指定的输出,您可以将aList.append((count, myList[i-1]))行更改为:

aList.append(myList[i-1])
aList.append(count)   

最后,您发布的代码唯一错误的是,您希望循环从1而不是0开始。这意味着i-1将在0而不是-1开始。这是工作修改的代码:

def runLengthEncoding(myList):
    aList = []
    count = 1
    for i in range(1, len(myList)):
        if myList[i] == myList[i - 1]:
            count = count + 1
        else:
            aList.append((count, myList[i - 1]))
            count = 1
            if i == len(myList) - 1:
                aList.append((count, myList[i]))
    return aList

最新更新