我必须把这样一个列表中的相邻数字相加:
ls = [5, -2, -2, 2, -4, -2 ,-2, 7, 3, 1]
输出应为: [5, -4, 2, -8, 11]
[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]
使用 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]