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.
Basic Example
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, you’ll get the error when you use the sum()
function. Read below to understand better.
Output
180
In this tutorial, you’ll learn how to sum a list of numbers in Python and when it is appropriate to each method.
Table of Contents
Using Sum()
The sum() function sums the list of numbers in the Python list.
Use this function when you’re sure that the list contains ONLY numbers.
Code
num_list = [10, 20,30,30,40,50]
sum(num_list)
Output
All the numbers in the list are summed, and 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 following 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,
- Declare a variable to store the sum as
sum_of_nums
- Iterate over the list items using the
for
loop - Add it to the sum variable
sum_of_nums
- 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,
- use the isinstance() method to check if the current item is an instance of
numbers.Number
- Only if it is a
Number
, it’ll be summed. Otherwise, the item will be ignored
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,
- Check if the current item in the list is an instance of a
Number
. - If it is a number, pass the item to the
sum()
function.
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.
- Convert these
String
type numbers to an integer usingint()
- 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