创建一个新的 python 列表,在不使用 for 循环的情况下显示另一个列表中集合数字的累计总数

Create a new python list that shows the accumulated total from set numbers in another list without using for loops

我有一个 python 列表 (lpttg1 = [1,2,3,4,5]) 并想添加此列表中的数字以创建一个具有累计总数的新列表。所以输出列表应该是这样的 [1.0, 3.0, 6.0, 10.0, 15.0]。正如我在下面的代码段中所示,这可以使用 for 循环来完成。我想知道是否有矢量化形式或任何其他方法来删除 for 循环并完成任务。

lpttg1 = [1,2,3,4,5]
AcccumMeltlp1 = []
MMeltlp1 = 0.

for i in lpttg1:
    #print i
    MMeltlp1 = MMeltlp1+i
    #print MMeltbas_peri
    AcccumMeltlp1.append(MMeltlp1)
    
AcccumMeltlp1

谢谢

您正在寻找 numpy.cumsum() 当我们想要计算给定轴上数组元素的累积和时使用函数。

import numpy as np
in_arr = np.array([1,2,3,4,5,6])
output_array = np.cumsum(in_arr) 
output_array
array([ 1,  3,  6, 10, 15, 21])

DOCS 寻求更多帮助

pandas 的方法,使用 cumsum:

import pandas as pd

lpttg1 = [1,2,3,4,5]

AcccumMeltlp1=pd.Series(lpttg1).cumsum().tolist()

print(AcccumMeltlp1)

输出:

[1, 3, 6, 10, 15]

您可以使用 itertools 按以下方式执行此操作:

from itertools import accumulate

l = [1,2,3,4,5]
AcccumMeltlp1 = list(accumulate(l))

您可以使用functools.reduce

from functools import reduce
lpttg1 = [1, 2, 3, 4, 5]
AcccumMeltlp1 = reduce(labmda x, y: x + [x[-1] + y], lpttg1, [0])[1:]

如果列表大小小于 10 且始终固定,请使用此选项。

lst = [1, 2, 3]
newlist = [sum(lst[:1]), sum(lst[:2]), sum(lst[:3])]
print(newlist)