Вы можете использовать groupby :
from itertools import groupby
m = [(k, sum(1 for _ in v)) for k, v in groupby('aaabaaa')]
print(m)
Выход
[('a', 3), ('b', 1), ('a', 3)]
Объяснение
Функция groupby создает итератор, который возвращает последовательные ключи и группы из итерируемого, в данном случае 'aaabaaa'
.Ключ k
является значением, идентифицирующим группу, ['a', 'b', 'a']
.sum(1 for _ in v)
подсчитывает количество элементов в группе.