найти максимальную длину последовательных повторных чисел в списке (python)

Это мой первый вопрос с вопросом о stackoverflow. Я сделал довольно много поиска в Интернете, но не нашел то, что хочу. Мой вопрос заключается в том, как найти максимальную длину последовательных повторяющихся чисел (или элементов в целом) в списке с помощью python. Я написал следующую функцию, которая работает нормально, но мне было интересно, есть ли лучший способ сделать это или улучшить мой код. Большое спасибо!

def longest(roll): '''Return the maximum length of consecutive repeated elements in a list.''' i = 0 M = 0 # The maximum length while 0 <= i < len(roll): c = 1 # Temporarily record the length of consecutive elements for j in range(i+1, len(roll)): if roll[j] != roll[i]: i = j break c += 1 i += 1 if c > M: M = c if i == len(roll) - 1: break return M 

По максимальной длине я имею в виду следующее:

[1, 1, 2, 2, 2, 4], M = 3 (2 повторяли 3 раза);

[1, 2, 1, 2, 1], M = 1 (1 и 2 только один раз).

One Solution collect form web for “найти максимальную длину последовательных повторных чисел в списке (python)”

Вы можете использовать itertools .

 In [8]: import itertools In [9]: z = [(x[0], len(list(x[1]))) for x in itertools.groupby(a)] In [10]: z Out[10]: [(1, 2), (2, 3), (3, 1)] 

Кортежи в формате (item, count) . Если есть несколько прогонов заданного числа, это также сгруппирует их соответственно. Смотри ниже.

 In [11]: a = [1,1,1,1,1,2,2,2,2,2,1,1,1,3,3] In [12]: z = [(x[0], len(list(x[1]))) for x in itertools.groupby(a)] In [13]: z Out[13]: [(1, 5), (2, 5), (1, 3), (3, 2)] 

Получение максимального значения здесь не так уж сложно.

 In [15]: max(z, key=lambda x:x[1])[1] Out[15]: 5 
  • Вставка двух операций в транзакцию и получение «Невозможно работать с разными группами сущностей в транзакции» Ошибка
  • Как развернуть эту комбинацию «Python + twill + mechanize» с «Google App Engine»?
  • Невозможно увеличить глобальную переменную из функции в python
  • Добавление youtube видео в плейлист с использованием Python
  • несогласованность при переключении между часовыми поясами в python
  • Создание последовательных буквенно-цифровых номеров
  • Включен ли Python 3 to_bytes в python 2.7?
  • Разница между методами класса и экземпляра
  • следующее число с отдельными цифрами CCC 2013 старший 1
  • Разделение строки на основе поискового запроса в Python?
  • Что такое семантика оператора 'is' в Python?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.