# Element-wise addition of 2 lists?

I have now:

```    list1 = [1, 2, 3]
list2 = [4, 5, 6]
```

I wish to have:

```    [1, 2, 3]
+  +  +
[4, 5, 6]
|| || ||
[5, 7, 9]
```

Simply an element-wise addition of two lists.

I can surely iterate the two lists, but I don't want do that.

What is the most Pythonic way of doing so?

```    >>> from operator import add
>>> list( map(add, list1, list2) )
[5, 7, 9]
```

or `zip` with a list comprehension:

```    >>> [sum(x) for x in zip(list1, list2)]
[5, 7, 9]
```

### Timing comparisons:

```    >>> list2 = [4, 5, 6]*10**5
>>> list1 = [1, 2, 3]*10**5
10 loops, best of 3: 44.6 ms per loop
>>> %timeit from itertools import izip; [a + b for a, b in izip(list1, list2)]
10 loops, best of 3: 71 ms per loop
>>> %timeit [a + b for a, b in zip(list1, list2)]
10 loops, best of 3: 112 ms per loop
>>> %timeit from itertools import izip;[sum(x) for x in izip(list1, list2)]
1 loops, best of 3: 139 ms per loop
>>> %timeit [sum(x) for x in zip(list1, list2)]
1 loops, best of 3: 177 ms per loop
```

From: stackoverflow.com/q/18713321

Back to homepage or read more recommendations: