Как я могу проверить длину последовательных символов в списке в Python? - PullRequest
0 голосов
/ 27 октября 2019

В основном говорят, что у меня есть список в python

lst = [6, 6, 7, 1, 1, 1, 1, 4, 1]

программа должна вернуть 4, потому что число '1' отображается 4 раза подряд. Между прочим, число 6 также отображается последовательно, но программа должна получить число, которое отображается чаще всего при последовательном

других примерах:

[6, 4, 4, 4, 1, 1, 7]

должно выдавать 3, потому что '4'3 раза подряд

Я застрял на этой проблеме какое-то время, любой совет ??

Ответы [ 2 ]

2 голосов
/ 27 октября 2019

groupby() даст вам отдельные группы с одинаковым значением по умолчанию:

> [list(g) for k, g in groupby(lst)] 
[[6, 6], [7], [1, 1, 1, 1], [4], [1]]

Вы можете передать это в max() с ключом len, чтобы получитьсамая длинная:

> from itertools import group-by
> lst = [6, 6, 7, 1, 1, 1, 1, 4, 1]
> max((list(g) for k, g in groupby(lst)), key=len)
[1, 1, 1, 1]

Это самая длинная группировка, из которой вы можете получить длину. В качестве альтернативы вы можете просто составить список длин и вызвать max без ключа:

max(len(list(g)) for k, g in groupby(lst))
0 голосов
/ 27 октября 2019

Два разных вопроса могут помочь.

Сначала, чтобы преобразовать текст в список, вы можете проверить этот ответ.

Как только у вас есть список, вам нужно посчитать последовательные значения, его спросили и решили здесь .

...