# Add two lists element-wise in Python Last updated: Jun 29, 2022 Photo from Unsplash

## Add two lists element-wise in Python#

To add two lists element-wise:

1. Use the `zip` function to get an iterable of tuples with the corresponding items.
2. Use a list comprehension to iterate over the iterable.
3. On each iteration, pass the tuple to the `sum()` function.
main.py
```Copied!```list_1 = [1, 2, 3]
list_2 = [4, 5, 6]

# 👇️ [(1, 4), (2, 5), (3, 6)]
print(list(zip(list_1, list_2)))

result = [sum(tup) for tup in zip(list_1, list_2)]

print(result)  # 👉️ [5, 7, 9]
``````

The zip function iterates over several iterables in parallel and produces tuples with an item from each iterable.

main.py
```Copied!```list_1 = [1, 2, 3]
list_2 = [4, 5, 6]

# 👇️ [(1, 4), (2, 5), (3, 6)]
print(list(zip(list_1, list_2)))
``````

You can imagine that the `zip()` function iterates over the lists, taking 1 item from each.

The first tuple in the list consists of the elements in each list with an index of `0`, the second tuple consists of the elements in each list that have an index of `1`, etc.

The last step is to use a list comprehension to iterate over the `zip` object and sum each tuple.

main.py
```Copied!```list_1 = [1, 2, 3]
list_2 = [4, 5, 6]

# 👇️ [(1, 4), (2, 5), (3, 6)]
print(list(zip(list_1, list_2)))

result = [sum(tup) for tup in zip(list_1, list_2)]

print(result)  # 👉️ [5, 7, 9]
``````
List comprehensions are used to perform some operation for every element, or select a subset of elements that meet a condition.

The sum function takes an iterable, sums its items from left to right and returns the total.

On each iteration, we pass the current tuple to the `sum()` function and get the total.

You can also use this approach to add more than two lists element-wise.

main.py
```Copied!```list_1 = [1, 2, 3]
list_2 = [4, 5, 6]
list_3 = [7, 8, 9]

# 👇️ [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
print(list(zip(list_1, list_2, list_3)))

result = [sum(tup) for tup in zip(list_1, list_2, list_3)]

print(result)  # 👉️ [12, 15, 18]
``````

Alternatively, you can use the `map()` function.

To add two lists element-wise:

1. Use the `map()` function to call the `add()` function with the two lists.
2. Use the `list()` class to convert the `map` object to a list.
main.py
```Copied!```from operator import add

list_1 = [1, 2, 3]
list_2 = [4, 5, 6]

result = list(map(add, list_1, list_2))

print(result)  # 👉️ [5, 7, 9]
``````

The map() function takes a function and an iterable as arguments and calls the function with each item of the iterable.

The `add` function from the `operator` module is the same as `a + b`.

You can imagine that `map` calls the `add` function with each item of the two iterables (e.g. items at index `0`, then `1`, etc).

The `map` function returns a `map` object, so we had to use the `list()` class to convert the result to a list.

I wrote a book in which I share everything I know about how to become a better, more efficient programmer. You can use the search field on my Home Page to filter through all of my articles.