Je dois écrire un programme qui utilise un codage de longueur d'exécution pour compresser une liste. Je n'ai aucune idée de comment le faire et après avoir changé un peu mon programme à la fois, je ne sais même pas ce qu'il fait maintenant.Fonction de codage de longueur d'exécution (pas de bibliothèques ou de méthodes d'objet)
Nous ne sommes pas autorisés à importer et bibliothèques ou utiliser des méthodes de chaîne python ou liste d'objets (comme append()
).
C'est à peu près où je suis maintenant:
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
en utilisant cette liste comme un exemple:
[8,8,8,4,5,5,5,6,6,6,6,9,8,1,1,1,1,3,3]
Il va retourner ceci:
[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]
Ce qui est évidemment Vraiment loin.
Qu'est-ce qui doit être retourné? –
il devrait retourner une liste compressée comme: [8,3,4,1,5,3 ...] – Nick