Python:对列表中具有相同符号的相邻数字求和

Python:对列表中具有相同符号的相邻数字求和,python,list,sum,Python,List,Sum,我必须对列表中的相邻数字求和,如下所示: ls=[5、-2、-2、2、-4、-2、-2、7、3、1] 输出应该是:[5,-4,2,-8,11]您可以使用itertools.gropby,按小于0进行分组: >>> list(map(lambda x: sum(x[1]), itertools.groupby(ls, key=lambda x: x<=0))) [5, -4, 2, -8, 11] >>列表(map(lambda x:sum(x[1])、itertools

我必须对列表中的相邻数字求和,如下所示:

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


输出应该是:
[5,-4,2,-8,11]

您可以使用
itertools.gropby
,按小于0进行分组:

>>> list(map(lambda x: sum(x[1]), itertools.groupby(ls, key=lambda x: x<=0)))
[5, -4, 2, -8, 11]
>>列表(map(lambda x:sum(x[1])、itertools.groupby(ls,key=lambda x:x使用和:

从itertools导入groupby
ls=[5,-2,-2,2,-4,-2,-2,7,3,1]
[groupby(ls,key=lambda x:x<0)中g的和(g)]
# [5, -4, 2, -8, 11]

我本想用理解力来扩展我的理解力,但它在这里!回答得好!它的效率有多高?顺便说一句ty@francescociao这是非常有效的。groupby和它的组都是惰性迭代器,没有在内存中创建中间列表。
sum
是用C实现和优化的,以及理解。它是多少菲西特?顺便说一句ty@francescociao,它真的很有效,还有另一个答案。您可以同时使用这两种方法,它们甚至可以更好地摆脱lambda函数;)我必须找到尽可能快的解决方法欢迎使用SO。请提供一个最小、完整且可验证的示例。向我们展示您最近尝试的代码以及您遇到的问题。并解释为什么结果不是您期望的结果。编辑您的问题以包含代码,请不要将其添加到注释中,因为它可能未被阅读能够的
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]