This question already has answers here:
How to find the cumulative sum of numbers in a list?
(20个答案)
5年前关闭。
我有一些数据,例如我拥有的魔豆数量变化的日志。为了简化这个问题,假设它已经按日期排序(从旧到新),并且可以用以下列表表示:
请注意,每个数字表示魔术豆的数量变化,而不是当前总数。因此,我以1个豆子开始,然后再得到2个豆子,然后再得到3个豆子,然后将4个豆子送给某人,依此类推。
我想找到的是我在单个时间点拥有的最大豆类数量。也就是说,我口袋里最多的豆子是多少。
为此,我编写了以下代码:
它可以工作(答案是7),但是必须有一种更优雅,更蟒蛇的方法来做到这一点。
谢谢你的帮助!
不幸的是,累加函数不在Python 2.7中。您可以定义类似由200 OK链接的问题中所述的内容:How to find the cumulative sum of numbers in a list?
因此,例如:
(20个答案)
5年前关闭。
我有一些数据,例如我拥有的魔豆数量变化的日志。为了简化这个问题,假设它已经按日期排序(从旧到新),并且可以用以下列表表示:
a = [1,2,3,-4,5,-6]
请注意,每个数字表示魔术豆的数量变化,而不是当前总数。因此,我以1个豆子开始,然后再得到2个豆子,然后再得到3个豆子,然后将4个豆子送给某人,依此类推。
我想找到的是我在单个时间点拥有的最大豆类数量。也就是说,我口袋里最多的豆子是多少。
为此,我编写了以下代码:
a = [1,2,3,-4,5,-6]
def find_max_seats(some_list):
running_list = []
running_sum = 0
for i in some_list:
running_sum += i
running_list.append(running_sum)
return max(running_list)
print find_max_seats(a)
它可以工作(答案是7),但是必须有一种更优雅,更蟒蛇的方法来做到这一点。
谢谢你的帮助!
最佳答案
这应该适用于Python 3:
from itertools import accumulate
def find_max_seats(some_list):
return max(accumulate(some_list))
不幸的是,累加函数不在Python 2.7中。您可以定义类似由200 OK链接的问题中所述的内容:How to find the cumulative sum of numbers in a list?
因此,例如:
def accumulate(xs):
total = 0
for x in xs:
total += x
yield total
关于python - 找到运行总和产生的最大值的一种优雅方法是什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24404099/