Skip to main content

How to Sum Elements of Tuples in Python

This guide explores various methods for summing elements within tuples and lists of tuples in Python. We'll cover:

  • Summing all elements of a single tuple.
  • Summing corresponding elements across multiple tuples (element-wise addition).
  • Summing elements at a specific index within tuples in a list.

We'll use built-in functions like sum(), map(), and zip(), along with list comprehensions and generator expressions for concise and efficient solutions.

Summing All Elements of a Single Tuple​

The most straightforward way to sum all elements of a single tuple is to use the built-in sum() function:

my_tuple = (10, 20, 30)
result = sum(my_tuple)
print(result) # Output: 60
  • sum(my_tuple): The sum() function directly accepts any iterable (including tuples) and returns the sum of its elements. This is the most Pythonic and efficient way to sum the elements of a single tuple.

Summing Elements of Each Tuple in a List of Tuples​

If you have a list of tuples, and you want to get a list containing the sum of each individual tuple, use a list comprehension:

list_of_tuples = [(10, 20), (30, 40), (50, 60)]
result = [sum(tup) for tup in list_of_tuples]
print(result) # Output: [30, 70, 110]
  • [sum(tup) for tup in list_of_tuples]: This list comprehension iterates through each tup (which is a tuple) in list_of_tuples and calculates sum(tup). The results are collected into a new list.

Element-wise Sum of Multiple Tuples​

To sum corresponding elements across multiple tuples (e.g., add the first element of each tuple together, the second element of each tuple together, etc.), use zip() and map():

tuple_1 = (1, 2, 3)
tuple_2 = (4, 5, 6)
tuple_3 = (7, 8, 9)

result = tuple(map(sum, zip(tuple_1, tuple_2, tuple_3))) # You can add as many tuples as you need.
print(result) # Output: (12, 15, 18)
  • zip(tuple_1, tuple_2, ...): This function takes multiple iterables and "zips" them together. It returns an iterator of tuples, where the i-th tuple contains the i-th element from each of the input iterables. For example:
    list_of_tuples = [(1, 2), (3, 4), (5, 6)]
    print(list(zip(*list_of_tuples)))
    # Output: [(1, 3, 5), (2, 4, 6)]
    • In this case, zip(tuple_1, tuple_2, tuple_3) produces: (1, 4, 7), (2, 5, 8), (3, 6, 9).
  • map(sum, ...): The map() function applies the sum() function to each tuple produced by zip(). So, sum((1, 4, 7)) is calculated, then sum((2, 5, 8)), and so on. map returns an iterator.
  • tuple(...): Converts the result of map() (which is an iterator) into a tuple.

Summing Elements at a Specific Index in a List of Tuples​

If you have a list of tuples and want to sum the elements at a specific index across all tuples, use a generator expression with sum():

list_of_tuples = [(10, 20), (30, 40), (50, 60)]

# Sum the second element (index 1) of each tuple
result = sum(tup[1] for tup in list_of_tuples)
print(result) # Output: 120

# Sum the first element (index 0) of each tuple:
result = sum(tup[0] for tup in list_of_tuples)
print(result) # Output: 90
  • (tup[1] for tup in list_of_tuples): The sum() is called with a generator object that contains only the elements in index 1 of the list's tuples.

  • You can also unpack the values and discard the unnecessary ones:

    list_of_tuples = [(10, 20), (30, 40), (50, 60)]
    result = sum(second for _, second in list_of_tuples) # Use _ to discard the first element of each tuple.
    print(result) # Output: 120