Нормальная реализация RLE на python

В интернете очень много плохих реализаций RLE, которые  не используют наглядность. Пусть еще одна будет, присутствует кодер и декодер. Используется в качестве простого архиватора. Ближе к делу, начитаться про работу вы на других ресурсах успели.


Кодер RLE (encoder)

def nullRLE(sequense):
    out = []
    countPars = -1
    lastChar = sequense[0] # 0
    for x in sequense:
        if x == lastChar:
            countPars += 1
        else:
            out.append(lastChar)
            out.append(countPars)
            countPars = 0
            lastChar = x
    out.append(lastChar)
    out.append(countPars)
    return out
sequence = [0, 1, 0, 0, 2, 0, 0, 0]
print("Выход:", nullRLE(sequence))
Выход: [0, 0, 1, 0, 0, 1, 2, 0, 0, 2]

Декодер RLE  (decoder)

def decodeRLE(encoded_sequence):
    decoded = []
    for i in range(0, len(encoded_sequence), 2):
        char = encoded_sequence[i]
        count = encoded_sequence[i + 1]
        for _ in range(count + 1):  # Добавляем (count + 1) раз текущий символ
            decoded.append(char)
    return decoded

# Пример использования
encoded_sequence = [0, 0, 1, 0, 0, 1, 2, 0, 0, 2]
print("Декодированный выход:", decodeRLE(encoded_sequence))
Декодированный выход: [0, 1, 0, 0, 2, 0, 0, 0]
{{ x.text }}