def rle(src):
result = []
if src:
current = src[0]
counter = 1
for e in src:
if e == current:
counter += 1
else:
result.append((current, counter))
current = e
counter = 1
result.append((counter, current)) # эта строчка не понятна
return result
string = 'aaabbbtttggghhhavaaa'
print(rle(string))
В итоге код выводит следующее: [('a', 4), ('b', 3), ('t', 3), ('g', 3), ('h', 3), ('a', 1), ('v', 1), (3, 'a')]
В коде комментом указал не понятный мне момент. Видите, что в выходных данных последний элемент другой? Его обрабатывает та самая строка, а все другие обрабатываются в цикле for. Не могу понять почему так происходит, зачем она вообще нужна? Не могу себе представить программу с ней, мне кажется будто эта строка лишняя и все должно работать без неё. Объясните, пожалуйста.