如何计算元组列表的累积和

时间:2016-04-04 03:56:10

标签: python list python-3.x tuples

我有这个元组列表,想要创建一个新列表,其中包含前面列表索引的累积总和:

l1 = []
for j in l: #already a given list
    result = tuple(map(sum, zip(j, j+1)))
    #or
    result = (map(operator.add, j, j+1,))
    l1.append(result)

我正在使用:

zip

两种情况(operator# x is a np array img_mean = x.mean(axis=0) img_std = np.std(x) x = (x - img_mean) / img_std )都会返回

  

" TypeError:只能将元组(不是" int")连接到元组"

2 个答案:

答案 0 :(得分:5)

您可以使用itertools.accumulate

>>> import itertools
>>> itertools.accumulate([1, 3, 5])
<itertools.accumulate object at 0x7f90cf33b188>
>>> list(_)
[1, 4, 9]

它接受一个可选的func,用于添加:

>>> lst = [(1.0, 1.0), (3.0, 3.0), (5.0, 5.0)]
>>> import itertools
>>> list(itertools.accumulate(lst, lambda a, b: tuple(map(sum, zip(a, b)))))
[(1.0, 1.0), (4.0, 4.0), (9.0, 9.0)]
Python 3.2中引入了

itertools.accumulate。如果您使用较低版本,请使用以下accumulate(来自功能文档):

import operator
def accumulate(iterable, func=operator.add):
    it = iter(iterable)
    try:
        total = next(it)
    except StopIteration:
        return
    yield total
    for element in it:
        total = func(total, element)
        yield total

答案 1 :(得分:0)

NVM,可以用这段代码解决:

    result1=0
    result2=0
    l1=[]
    for k, v in l:
        result1+=k
        result2+=v
        l1.append((result1, result2))

非常感谢您的帮助! =)