Как разделить строку, чтобы объединить повторяющиеся элементы в python3 - PullRequest
0 голосов
/ 11 июля 2019

Как разбить строку следующим образом:

a = "111554222117"

Моя цель - разбить нить на несколько частей, где повторяющиеся непрерывные сгруппированы вместе. На выходе будет список

b = ['111','55','4','222','11','7']

PS: инструмент нельзя использовать как itertools, так как это вопрос интервью.

Я пытаюсь использовать как минимум два цикла for, но они не эффективны. как использовать только один loop.

Спасибо.

Ответы [ 2 ]

1 голос
/ 11 июля 2019
a = "111554222117"
b = []
s = a[0]
for i in range(1,len(a)):
    if a[i] == s[0]:
        s += a[i]
    else:
        b.append(s)
        s = a[i]
b.append(s)
1 голос
/ 11 июля 2019

Вы можете сделать это так:

>>> import itertools
>>> [''.join(data) for _, data in itertools.groupby("111554222117")]
['111', '55', '4', '222', '11', '7']
...