guides
Compression Algorithms
Run-length encoding, Huffman coding, and LZ77 in Python.
Published May 30, 2026
Run-Length Encoding
def rle_encode(data: str) -> list[tuple[str, int]]:
if not data:
return []
result = []
count = 1
for i in range(1, len(data)):
if data[i] == data[i - 1]:
count += 1
else:
result.append((data[i - 1], count))
count = 1
result.append((data[-1], count))
return result
Huffman Coding (Frequency Table)
def frequency_table(text: str) -> dict[str, int]:
freq = {}
for ch in text:
freq[ch] = freq.get(ch, 0) + 1
return freq
Delta Encoding
def delta_encode(values: list[int]) -> list[int]:
if not values:
return []
result = [values[0]]
for i in range(1, len(values)):
result.append(values[i] - values[i - 1])
return result