运行长度编码Python

时间:2017-10-04 00:56:15

标签: python encoding

我遇到的问题是:

编写一个函数,该函数将字符列表作为参数,并返回反映该列表的行程编码的列表。返回列表中的元素遵循以下模式:偶数索引包含字符,奇数索引包含字符连续重复的次数。将函数命名为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

1 个答案:

答案 0 :(得分:0)

你几乎拥有它,然而有一些必要的改变。调用add将无效,因为它将Wizard称为变量,而不是字符串。如果用引号替换方括号,则将预期输入作为字符串(在python中也称为字符列表)。

此外,根据您对函数输出格式的挑剔程度,您当前正在输出元组列表,而不是带有计数的字符列表。要按照问题中的说明输出,您可以将runLengthEncoding([aaabbccd])行更改为:

aabbccd

最后,您发布的代码唯一不对的是您希望for循环从1开始而不是0.这将意味着aList.append((count, myList[i-1]))将从0开始而不是-1。这是修改后的代码:

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