Конвертировать RLE в строку в Python из списка - PullRequest
1 голос
/ 02 апреля 2019

Я адаптировал фрагмент кода из другого вопроса, который преобразует строку в RLE в Python. Я ищу решение, которое использует ту же концепцию, но в обратном направлении, то есть ввод некоторого RLE и получение полной строки обратно. Я включил исходный код, который использовал ниже.

Заранее спасибо (обновлено, добавлен код и скриншот вывода)

text=input("Please enter the string to encode")
encoded=[]
index=0
amount=1
while index<=(len(text)-1):  
  if index==(len(text)-1) or text[index]!=text[(index+1)]:
    encoded.append((text[index],amount))        
    amount=1
  else:
    amount=amount+1            
  index=index+1   
print(encoded)

from itertools import groupby

def rle(text):
    return [(i, len(list(g))) for i, group in groupby(text)]

def from_rle(s):
    return ''.join((i*j for i, j in s))

print(text)


[https://i.stack.imgur.com/bLevj.jpg][1]

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Вы можете сделать это в одну строку

''.join([x*y for x,y in encoded])

При этом вы перебираете список и создаете список со строками с соответствующим вхождением. Затем вы объединяете эти списки, чтобы получить его как одну строку.

0 голосов
/ 02 апреля 2019

попробуйте использовать groupby

from itertools import groupby

def rle(text):
    return [(i, len(list(g))) for i, group in groupby(text)]

def from_rle(s):
    return ''.join((i*j for i, j in s))
...