Находит самую длинную группу, не зная, что 'n'
будет ей:
a = [[1,'n'],[2,'n'],[3,'n'],[4,'d'],[5,'n'],[6,'q'],[6,'q'],[6,'q'],[6,'q'],[6,'q']]
k = max( (list(grp) for key,grp in groupby(a,lambda x:x[1])), key=len)
print(k)
Вывод:
[[6, 'q'], [6, 'q'], [6, 'q'], [6, 'q'], [6, 'q']]
Если есть две группы одинаковой длины, первая(независимо от 2-го элемента).
Это "развернутый" вариант, предназначенный для поиска самой длинной группы элементов с 'n'
в качестве второго элемента - с использованием max () :
a = [[1,'n'],[2,'n'],[3,'n'],[4,'d'],[5,'n']]
result = [[]]
for e in a:
if e[1] == 'n': # if 'n' 2nd element, add to list
result[-1].append(e)
elif result[-1]:
result.append([]) # if not, append new sublist
longest = max(result, key=len) # get the longest one from all lists
print(longest)
Вывод:
[[1, 'n'], [2, 'n'], [3, 'n']]
Доку: