簡體   English   中英

在列表的累積總和中解釋列表理解

[英]Explain list comprehension in cumulative sum of list

Python代碼獲取一個列表的累計和

def Cumulative(lists): 
    cu_list = [] 
    length = len(lists) 
    cu_list = [sum(lists[0:x:1]) for x in range(0, length+1)] 
    return cu_list[1:] 

# Driver Code 
lists = [10, 20, 30, 40, 50] 
print (Cumulative(lists)) 

任何人都可以幫助我擴展以上列表理解嗎?

我寫了這段代碼

def cum_sum(m):
    result = 0
    for x in m:
        result += x
        print(result, end=", ")


cum_sum([1,2,3,10])

使用發電機

def cum_sum(m):
    result = 0
    for x in m:
        result += x
        yield result


list(cum_sum([1,2,3,10]))

這部分代碼

[sum(lists[0:x:1]) for x in range(0, length+1)]

創建一個新列表,從lists的第一個元素開始,直到(並排除)列表的第x個元素(參見例如Python 列表切片)。 然后它將sum超過它。

所以它不必要地創建了幾個列表並進行了不必要的求和(它可以將總和保持在 memory 中的元素x並且只需添加下一個元素 - 就像這里介紹的大多數解決方案一樣)。

您已經通過itertools.accumulate免費獲得:

from itertools import accumulate


lists = [10, 20, 30, 40, 50]
print(list(accumulate(lists)))
# [10, 30, 60, 100, 150]
ans = [] for i in range(len(lists)): ans.append(sum(lists[:i+1]))

這是列表推導的擴展形式:

cu_list = []
for x in range(0, length+1):
    s = sum(lists[0:x:1])
    cu_list.append(s)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM