How To Sum a list of numbers in Python – Definitive Guide

Python list allows you to store a list of numbers in it.

You can sum a list of numbers in Python using the sum(list) statement.

In this tutorial, you’ll learn how to sum a list of numbers in Python and when it is appropriate to each method.

If You’re in Hurry…

You can use the below code to sum a list of numbers in Python.

num_list = [10, 20,30,30,40,50]

sum(num_list)

Python list allows you to store different types of objects in the same list. Hence, if there is a non-number item in this list, then you’ll get the error when you use the sum() function. Read below to understand better.

Output

    180

If You Want to Understand Details, Read on…

There are native list methods available and also you can create a function using the for loop to sum a list of numbers. Let us learn these methods in detail.

Using Sum()

You can use the sum() function to sum the list of numbers in Python.

It is appropriate to use this function when you’re sure that the list contains ONLY numbers.

Code

The below code demonstrates how to use the sum() function to sum the list of numbers.

num_list = [10, 20,30,30,40,50]

sum(num_list)

Output

All the numbers in the list are summed and then the output is displayed.

    180

Now let us see what happens when your list contains a String item in it.

Code

The list in the below code contains a String item i along with other 6 numbers. When you invoke the sum() function on this list, an unsupported operand type error will occur.

num_list = [10, 20,30,30,40,50,'i']

sum(num_list)

Output

The below error is thrown as the String item i is available in the list.

    ---------------------------------------------------------------------------

    TypeError                                 Traceback (most recent call last)

          1 num_list = [10, 20,30,30,40,50,'i']
          2 
    ----> 3 sum(num_list)


    TypeError: unsupported operand type(s) for +: 'int' and 'str'

In this case, you need to create your own methods to sum only the numbers available in the list.

Using For Loop

In this section, you’ll learn how you can sum a list of numbers using the for loop.

To sum up a list of numbers,

  1. Declare a variable to store the sum as sum_of_nums
  2. Iterate over the list items using the for loop
  3. Add it to the sum variable sum_of_nums
  4. Once the iteration is complete, you’ll have the sum of the list in this variable.

Code

The below code demonstrates how to use the for loop to sum a list of numbers.

num_list = [10, 20,30,30,40,50]

sum_of_nums = 0 

for i in num_list:
    sum_of_nums += i

sum_of_nums

The numbers in the list are summed and the output is displayed.

Output

    180

Code

The code below demonstrates how to use the for loop to sum ONLY the numbers in the list. The other item types like String will be ignored.

During each iteration, you can use the isinstance() method to check if the current item is an instance of numbers.Number. Only if it is a Number, then it’ll be summed. Otherwise, the item will be ignored.

This is how you can use the for loop to sum only the numbers in a list.

num_list = [10, 20,30,30,40,50,'i']

sum_of_nums = 0 

for i in num_list:
    if isinstance(i, numbers.Number):
        sum_of_nums += i

sum_of_nums

Output

The string i in the list is ignored and the other numbers are summed.

    180

Summing Only Numbers available In List

This section teaches you how to sum only the numbers available in the list using the sum() function and the list comprehension.

Using list comprehension, you can check if the current item in the list is an instance of Number. If it is a number, then you can pass the item to the sum() function.

Hence, the sum() function here will not show an error while summing the list with the String items.

Code

import numbers

num_list = [10, 20,30,30,40,50,'i']

sum(item for item in num_list if isinstance(item, numbers.Number))

Output

Only the numbers in the list are summed and the output is displayed.

    180

Sum Numbers Stored as String

In some cases, the numbers will be stored as strings in a list in python.

In this case, you have to convert these String-type numbers to an integer using int() and then pass it to the sum() function.

Code

num_list = ['10', '20','30','30','40','50']

sum(int(i) for i in num_list)

Output

The String-type numbers are converted to int and summed together using the sum() function.

    180

Conclusion

You’ve learned how to sum a list of numbers in Python using the sum() function and using a user-defined function with for loops.

Also, the python list can contain numbers and String-type items in the same list. You have learned how to sum only the number type items in the list using list comprehension.

If you have any questions, please comment below.

You May Also Like

Leave a Comment