How can I add the corresponding elements of several lists of numbers?
Try this functional style code:
>>> map(sum, zip(*lists))
[6, 9, 12, 15, 18]
The zip
function matches elements with the same index.
>>> zip(*lists)
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6), (5, 6, 7)]
Then sum
is applied to each tuple by using map
.
See it working online: ideone
Note that in Python 3.x, map
no longer returns a list. If you need the list, please see the following question:
- Getting a map() to return a list in Python 3.x
(You can just call list
).
Using numpy:
>>> seq = np.array([
... [1,2,3,4,5],
... [2,3,4,5,6],
... [3,4,5,6,7]])
>>> np.sum(seq,axis=0)
array([ 6, 9, 12, 15, 18])
>>> lis=[[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7]]
>>> [sum(x) for x in zip(*lis)]
[6, 9, 12, 15, 18]
Assuming:
a = [1,2,3,4,5]
b = [2,3,4,5,6]
c = [3,4,5,6,7]
just do this:
[sum(n) for n in zip(*[a, b, c])]