簡體   English   中英

對列表列表求和以獲取求和列表Python

[英]Sum a list of lists to get a sum list Python

我正在嘗試創建一個定義助手功能,該功能對列表列表求和以得到一個求和列表。

例如:

[[1,2,3],[1,2,3],[2,3,4]]

會顯示為:

[4,7,10]

我在另一篇工作中發現了這一點:

[sum(i) for i in zip(*listoflists)]

我需要將其轉換為已定義的函數。 這是我到目前為止所擁有的,但是沒有用。

def addhours(listoflists):
    for list in zip(*listoflists):
        newsum = sum (list)
return newsum

只需將列表理解放在函數內部即可。 (帶return

>>> def addhours(listoflists):
...     return [sum(lst) for lst in zip(*listoflists)]
...
>>> addhours([[1,2,3],[1,2,3],[2,3,4]])
[4, 7, 10]

為什么您的代碼不起作用?

def addhours(listoflists):
    for list in zip(*listoflists):
        newsum = sum (list)  # <---- This statement overwrites newsum
    return newsum # returns the last sum.

您需要一個列表來將總和作為項目保存。

def addhours(listoflists):
    result = []
    for lst in zip(*listoflists):
        result.append(sum(lst)) # Append to the list instead of overwriting.
    return result

順便說一句,不要使用list作為變量名。 它隱藏了內置功能list

由於該函數很小,因此您還可以使用匿名定義:

>>> addhours = lambda l: [sum(i) for i in zip(*l)]
>>> addhours([[1,2,3],[1,2,3],[2,3,4]])
>>> [4,7,10]

暫無
暫無

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

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