我试图首先编写代码,将数字从最低到最高排序(例如1、3、2、4、5至1、2、3、4、5)。其次,我想在列表中逐步添加数字。 例如。
1
3
6
10
15
我已经尝试过使用sum
函数,然后使用sorted
函数,但是我想知道是否可以用代码整齐地编写它们,以使所有工作都变得可行。
Addition = [1, 13, 166, 3, 80, 6, 40]
print(sorted(Addition))
我能够水平排列数字,但无法垂直添加数字。
答案 0 :(得分:3)
显然,您需要一个cumulative addition
。您可以使用一个简单的循环编写一个简单的代码,然后yield
随时进行结果
def cumulative_add(array):
total = 0
for item in array:
total += item
yield total
>>> list(cumulative_add([1,2,3,4,5]))
[1, 3, 6, 10, 15]
根据您的目标,您可能还希望使用已经为您编写了累积金额的库,例如pandas
。
例如,
>>> s = pd.Series([1,2,3,4,5])
>>> s.cumsum()
0 1
1 3
2 6
3 10
4 15
答案 1 :(得分:2)
您可以将itertools.accumulate
与sorted
一起使用:
import itertools
mylist = [1, 2, 3, 4, 5]
result = list(itertools.accumulate(sorted(mylist)))
# result: [1, 3, 6, 10, 15]
默认操作为operator.add
,但是您可以自定义它。例如,如果需要,您可以运行产品而不是运行sum:
import itertools
import operator
mylist = [1, 2, 3, 4, 5]
result = list(itertools.accumulate(sorted(mylist), operator.mul))
# result: [1, 2, 6, 24, 120]