How to find Run length encoding in python

You can do this with groupby

from itertools import groupby
ar = [2,2,2,1,1,2,2,3,3,3,3]
print([(k, sum(1 for i in g)) for k,g in groupby(ar)])
# [(2, 3), (1, 2), (2, 2), (3, 4)]

Here is an answer using the high-performance pyrle library for run length arithmetic:

# pip install pyrle
# (pyrle >= 0.0.25)

from pyrle import Rle

v = [2,2,2,1,1,2,2,3,3,3,3]

r = Rle(v)
print(r)
# +--------+-----+-----+-----+-----+
# | Runs   | 3   | 2   | 2   | 4   |
# |--------+-----+-----+-----+-----|
# | Values | 2   | 1   | 2   | 3   |
# +--------+-----+-----+-----+-----+
# Rle of length 11 containing 4 elements

print(r[4])
# 1.0

print(r[4:7])
# +--------+-----+-----+
# | Runs   | 1   | 2   |
# |--------+-----+-----|
# | Values | 1.0 | 2.0 |
# +--------+-----+-----+
# Rle of length 3 containing 2 elements

r + r + 0.5
# +--------+-----+-----+-----+-----+
# | Runs   | 3   | 2   | 2   | 4   |
# |--------+-----+-----+-----+-----|
# | Values | 4.5 | 2.5 | 4.5 | 6.5 |
# +--------+-----+-----+-----+-----+
# Rle of length 11 containing 4 elements