Используйте переменную для отслеживания последнего увиденного значения, затем добавьте его к текущему индексу, если он такой же.
def sum_consecutive(s):
p = s[:1] # final list
cur = s[0] # keep track of last seen value
for i in s[1:]: # your exercise: replace this with `range`
if i == cur:
p[-1] += i
else:
p.append(i)
cur = i
return p
sum_consecutive([1, 4, 4, 4, 0, 4, 3, 3, 1])
# [1, 12, 0, 4, 6, 1]
Asбонус, давайте не будем забывать, что stdlib существует, поэтому вы можете использовать itertools.groupby
, чтобы сделать это в одну строку.
from itertools import groupby
[sum(g) for _, g in groupby([1, 4, 4, 4, 0, 4, 3, 3, 1])]
# [1, 12, 0, 4, 6, 1]