#python-3.x
#python-3.x
Вопрос:
Нужно найти количество каждого последовательного символа в строке. Пример: aaaabbbccaa вывод: a4b2B2c2a2
Символ может повторяться, но нужно считать только последовательные. Мне также нужно сохранить исходную последовательность. Я пытался сделать это с помощью кода ниже, но это не работает.
l = input()
counter = dict()
if l.isalpha() == True:
for letter in l:
if letter in counter:
counter[letter] = 1
else:
counter[letter] = 1
for this_one in list(counter.keys()):
print(this_one,counter[this_one],sep ="",end="")
Комментарии:
1.
itertools.groupby
Ответ №1:
Решение, если вас интересует while
механика цикла :
l = 'aaaabbBBccaazzZZZzzzertTTyyzaaaAA'
output = ''
index = 0
while index < len(l):
incr = index
count = 1
output = l[incr]
while incr < len(l)-1 and l[incr]==l[incr 1]:
count = 1
incr = 1
index = 1
output = str(count)
index = 1
print(output)
Ответ №2:
itertools.groupby
позволяет выразить это довольно кратко, используя выражение генератора.
from itertools import groupby
''.join(f'{x}{len(list(y))}' for x, y in groupby('aaaabbBBccaa'))
# outputs:
'a4b2B2c2a2'