繁体   English   中英

如何在列表中以递增方式添加数字,同时按从最低到最高的顺序进行排序?

[英]How to add numbers in your list, incrementally, while also being sorted from lowest to highest value?

我正在尝试编写代码,首先要对数字从最低到最高进行排序(例如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))

我能够对数字进行水平排序,但无法对数字进行垂直添加。

显然,您需要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

您可以将itertools.accumulatesorted一起使用:

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]

暂无
暂无

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

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