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