繁体   English   中英

将列表中的连续数字相加。蟒蛇

[英]Sum consecutive numbers in a list. Python

我试图在列表中对连续数字求和,同时保持第一个数字相同。

所以在这种情况下,5将保持5,10将是10 + 5(15),15将是15 + 10 + 5(30)

x = [5,10,15]
y = []

for value in x:
   y.append(...)

print y

[5,15,30]

你想要itertools.accumulate() (在Python 3.2中添加)。 没有额外需要,已经为您实施。

在Python不存在的早期版本的Python中,您可以使用给定的纯python实现:

def accumulate(iterable, func=operator.add):
    'Return running totals'
    # accumulate([1,2,3,4,5]) --> 1 3 6 10 15
    # accumulate([1,2,3,4,5], operator.mul) --> 1 2 6 24 120
    it = iter(iterable)
    total = next(it)
    yield total
    for element in it:
        total = func(total, element)
        yield total

这将与任何可迭代,懒惰和有效的完美协作。 itertools实现在较低级别实现,因此甚至更快。

如果你想把它作为一个列表,那么自然只需使用list()内置: list(accumulate(x))

y = [sum(x[:i+1]) for i in range(len(x))]

使用numpy.cumsum:

In[1]: import numpy as np
In[2]: x = [5,10,15]
In[3]: x = np.array(x)
In[4]: y = x.cumsum()
In[5]: y
Out[6]: array([ 5, 15, 30])

我使用的是Python 3.4

总而言之,所有元素都归结为你所在的元素?

x = [5,10,15]
y = [sum(x[:i+1]) for i in range(len(x))]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM