[英]Explain list comprehension in cumulative sum of list
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.