mas = [ [-2, 3, 3, 0, -3],
[15, 0, -2, 10, 10],
[0, 25, 12, -5, -7] ]
max_elem = max([x for b in mas for x in b]) #При помощи такого интересного генератора, я получаю весь массив, как обычный список
for m in range(len(mas)):
if max_elem in mas[m]: #Проверка, есть ли максимальный элемент в списке
max_elem_index = mas[m].index(max_elem) #Когда есть, то получаю его индекс.
print([b[max_elem_index:] for b in mas[:m+1]])#А этот генератор уже делает результат. mas[:m+1] - это срез, общего массива, а m+1, для того, что в этот список так же включало и текущий список, если же не нужно - то можно убрать. b[max_elem_index:] - для каждого из тех полученных списков, что находятся выше, срезом по индексу, получаю нужные элементы
break
def generate(sequence, group_by=5, func=sum):
for group in zip(*[iter(sequence)]*group_by):
yield from group
yield func(group)
print(*generate(a))
a = [1, 2, 23, 4, 5, 6, 7, 40, 9, 10, 100, 12, 13, 14, 15, 700, 17, 18, 19, 20]
for index, group in reversed(list([(i, a[i:i+5]) for i in range(0, len(a), 5)])):
s = sum(group)
a.insert(index + 5, s)
print(f'{index} {group} => {s}')
# 15 [700, 17, 18, 19, 20] => 774
# 10 [100, 12, 13, 14, 15] => 154
# 5 [6, 7, 40, 9, 10] => 72
# 0 [1, 2, 23, 4, 5] => 35
# a
# [1, 2, 23, 4, 5, 35, 6, 7, 40, 9, 10, 72, 100, 12, 13, 14, 15, 154, 700, 17, 18, 19, 20, 774]