Python: суммировать соседние числа с одинаковым знаком в списке - PullRequest
0 голосов
/ 20 ноября 2018

Я должен сложить соседние числа в списке следующим образом:

ls = [5, -2, -2, 2, -4, -2 ,-2, 7, 3, 1]

Выходные данные должны быть: [5, -4, 2, -8, 11]

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Использование 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]
0 голосов
/ 20 ноября 2018

Вы можете использовать itertools.gropby, группируя меньше 0:

>>> list(map(lambda x: sum(x[1]), itertools.groupby(ls, key=lambda x: x<=0)))
[5, -4, 2, -8, 11]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...