如何获得连续数字的总和?

时间:2019-06-17 20:32:19

标签: python python-3.x

如果为您提供了一个值为[1,2,2,4,4,0]的列表。您需要创建一个接受整数列表(正/负)并返回连续重复的数字之和的函数。我们需要以列表格式返回结果。

上述列表的答案为[1,4,8,0]。

我尝试在for循环中创建一个while循环,但这完全失败了。我完全被困住了。

def sum_consecutives(lst):
    n_list = []
    total = 0
    count = 0

for i in range(0,len(lst)):
    print(sum_consecutives([0, 7, 7, 7, 5, 4, 9, 9, 0]))

此函数应输出[0,21,5,4,18,0]

1 个答案:

答案 0 :(得分:4)

分组,然后求和。

>>> from itertools import groupby
>>> [sum(vs) for _, vs in groupby([1,2,2,4,4,0])]
[1, 4, 8, 0]
>>> [sum(vs) for _, vs in groupby([0, 7, 7, 7, 5, 4, 9, 9, 0])]
[0, 21, 5, 4, 18, 0]

group收集相等值的序列,因此groupby([1,2,2,4,4,0])返回类似[(1,[1]), (2, [2,2]), (4, [4,4]), (0, [0])]的值。 (它提供了迭代器,而不是等价的项目列表,但是更直观地显示具体列表的作用。)