Я работаю над упражнением, где мы должны моделировать сжатие данных через список. Скажем, нам дали список: [4,4,4,4,4,4,2,9,9,9,9,9,5,5,4,4]
Мы должны применить кодировку Run-length и получить новый список [4,6,2,1,9,5,5,2,4,2]
, где он показывает, сколько 4 (6) 2 (1) 9 (5) 5 (2) и т. Д. Совместно рядом с целым числом.Data Compression Model
До сих пор у меня есть следующий код, однако я ударяя семантическую ошибку, и не уверен, как это исправить:
def string_compression(List):
newlist=[]
counter=0
x=0
for elm in List:
prev_item= List[x-1]
current_item=List[x]
if prev_item == current_item:
counter+=1
else:
newlist+=[current_item]+[counter]
counter=0
PS Я еще новичок, поэтому прошу прощения, если это " дурацкий вопрос! Я бы очень признателен за помощь.
Missing отступа после ', если Элем == NewList [i2]:' и вы определяете 'счетчика ', но затем используйте неопределенный' total', вы даже потрудились прочитать сообщение об ошибке? – Julien
@JulienBernu Спасибо Julien. Вы даже потрудились прочитать мой вопрос? Я не сказал синтаксическую ошибку. –
Некоторые мысли. Попробуйте использовать более описательные имена, чем «x», «index», «i», «i2», «counter». (Это настолько бессмысленно, что вы не заметили, что некоторые из них не имеют никакой цели.) Нет смысла проверять, является ли элемент списка членом этого списка. (Когда будет 'List [index] в List' * not * быть истинным?) Вам нужен только один цикл. Решение этого вручную, на бумаге, подальше от компьютера, может быть полезным. – molbdnilo