Заполните массив из 30 элементов случайными числами на отрезке [10; 12] и найдите самую длинную последовательность стоящих рядом одинаковых элементов

Заполните массив из 30 элементов случайными числами на отрезке [10; 12] и найдите самую длинную последовательность стоящих рядом одинаковых элементов. Если таких последовательностей несколько выведите последнюю из них.

Например, для массива из 10 элементов, имеющих значения 10, 10, 11, 10, 12, 12, 11, 12, 11, 10 программа должна вывести 12, 12.

from random import randint

arr = [randint(10,12) for i in range(30)]

lst = []

n = 1

for i,x in enumerate(arr[:-1]):
  if x == arr[i+1]:
    n +=1
  else:
    lst.append(( x,n ))
    n = 1
 
max_el = max( lst, key=lambda x: x[1] )

print('массив : ',arr)

print("число : {}  {}".format( max_el[0], max_el[1] ))

Ответы (2 шт):

Автор решения: Danis
from random import randint

arr = [randint(10,12) for i in range(30)]

lst = []

n = 1

for i,x in enumerate(arr[:-1]):
  if x == arr[i+1]:
    n +=1
  else:
    lst.append(( x,n ))
    n = 1
 
max_el = max( lst, key=lambda x: x[1] )

print('массив : ',arr)

print("число:", *[max_el[0]] * max_el[1])
→ Ссылка
Автор решения: S. Nick

Попробуйте так:

from random import randint

arr = [randint(10, 12) for i in range(30)]
lst = []
n = 1

for i,x in enumerate(arr[:-1]):
    if x == arr[i+1]:
        n +=1
    else:
        lst.append(( x,n ))
        n = 1
 
max_el = max( lst, key=lambda x: x[1] )

print('массив arr: \n', arr)
print("\nчисло: {}; {} - раз/а".format( max_el[0], max_el[1] ))

_f = '{} ' * max_el[1]
ind_lst = lst.index(( max_el[0], max_el[1] ))
ind_1_item = sum([ i for v, i in lst[0:ind_lst] ])
_sliz = arr[ind_1_item : ind_1_item+max_el[1]]

print("\nсамая длинная последовательность: {}".format(_f).format(*_sliz)) 
→ Ссылка