我有一些數據,例如我擁有魔豆數量變化的日誌。爲了簡化問題,假設它已經按日期(從舊到新)排序,並可以通過此列表來表示:尋找運行總和產生的最大值的優雅方式是什麼?
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的方式來做到這一點。
感謝您的幫助!
只需使用'MAX()'與任何解決方案存在的。 –
@ 200OK我不明白......我已經在我的解決方案中使用了max – Optimesh
那裏的解決方案使用'list()'或者list comprehension來生成帶有累積和的列表,因爲你只需要最大的項目不是全部他們,所以只需簡單地調用'max()':max(accumu(a))'。這將防止創建不必要的列表。 –