Skip to content Skip to sidebar Skip to footer

Sum A List Of Lists To Get A Sum List Python

I'm trying to create a define a helper function that sums a list of lists to get a sum list. For example: [[1,2,3],[1,2,3],[2,3,4]] Would come out as: [4,7,10] I found this on

Solution 1:

Just put the list comprehension inside the function. (with 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]

Why your code does not work?

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

You need a list to hold sums as items.

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

BTW, don't use list as a variable name. It shadows builtin function list.


Solution 2:

Since the function is quite small, you could also use an anonymous definition:

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

Post a Comment for "Sum A List Of Lists To Get A Sum List Python"