我需要编写一个使用运行长度编码来压缩列表的程序。我不知道该怎么做,在一次改变我的程序之后,我什至不知道它现在在做什么。
我们不允许导入和库或使用 python 字符串或列表对象方法(如append()
)。
这几乎就是我现在的位置:
def rle(x):
c_list = []
count = 0
for num in x:
if x[num] == x[num - 1]:
c+=[x[num], count]
count+= 1
# ...
return c
以此列表为例:
[8,8,8,4,5,5,5,6,6,6,6,9,8,1,1,1,1,3,3]
它会返回这个:
[6, 0, 6, 1, 6, 2, 5, 3, 5, 4, 5, 5, 5, 6,
5, 7, 5, 8, 5, 9, 6, 10, 6, 11, 8, 12, 8,
13, 8, 14, 8, 15]
这显然是遥不可及的。