求和列表以获得和列表Python

时间:2014-02-15 16:25:55

标签: python function

我正在尝试创建一个定义辅助函数,该函数对列表列表进行求和以获得总和列表。

例如:

[[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

2 个答案:

答案 0 :(得分:3)

将列表理解放在函数中。 (使用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

答案 1 :(得分:3)

由于函数非常小,您还可以使用匿名定义:

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