Я должен сложить соседние числа в списке следующим образом:
ls = [5, -2, -2, 2, -4, -2 ,-2, 7, 3, 1]
Выходные данные должны быть: [5, -4, 2, -8, 11]
[5, -4, 2, -8, 11]
Использование itertools.groupby и sum:
itertools.groupby
sum
from itertools import groupby ls = [5, -2, -2, 2, -4, -2 ,-2, 7, 3, 1] [sum(g) for _, g in groupby(ls, key=lambda x: x < 0)] # [5, -4, 2, -8, 11]
Вы можете использовать itertools.gropby, группируя меньше 0:
itertools.gropby
>>> list(map(lambda x: sum(x[1]), itertools.groupby(ls, key=lambda x: x<=0))) [5, -4, 2, -8, 11]