How do you calculate the simple average of a list of numbers in Python, without needing to import any libraries?
Unfortunately, there’s no native
avg function in Python to easily calculate the average of a list containing just numbers:
example_list = [1, 2, 3, 4, 5, 6] average(example_list) # NameError: name 'average' is not defined avg(example_list) # NameError: name 'avg' is not defined
To calculate the average of a list of numbers in Python, use the
sum function and the
len function and divide the total sum by the total length of the list to obtain the average, like so:
example_list = [1, 2, 3, 4, 5, 6] simple_average = sum(example_list) / len(example_list) print(simple_average) # 3.5
What if my list doesn’t contain any values?
Do be aware that if you have an empty list you will receive the following error:
empty_list =  simple_average = sum(empty_list) / len(empty_list) # ZeroDivisionError: division by zero
To catch instances where you’re passing through an empty list, you may want to perform a check on the length of the list, like so:
empty_list =  simple_average = sum(empty_list) / len(empty_list) if len(empty_list) else None print(simple_average) # None
I’ve refrained from outputting a number, like
0 and instead have chosen
None, but you could choose whatever alternative output you prefer.
What if my list contains a
None value or non-numeric value?
As the operation performed when calculating the average of a list of values assumes each value is a number, to get the average operation to work would require a filter to be placed on the list first, before passing through the filtered list for calculation.
The three types of numeric types in Python (currently) are:
Therefore, we could loop through each element, check its value, and if it’s a number return a list of just the numbers:
dirty_list = [1, 2, 3, 4, 5, '6', None] clean_list = list(filter(lambda x: type(x) in [int, float, complex], dirty_list)) simple_average = sum(clean_list) / len(clean_list) if len(clean_list) else None print(clean_list) # [1, 2, 3, 4, 5] print(simple_average) # 3
Notice with our first operation performed, we needed to clean the
By using the
filter method, combined with a
lambda function we can set what we’re looking for to help calculate the average needed. The
lambda function has a parameter defined as
x (which ends up being each element in the original
dirty_list and we perform a
type check on that element to see if it is one of the accepted numeric values
filter list method accepts a function on how to filter on each element for its first parameter, and then the list on what needs filtering as the second parameter.
filter method returns an object, we wrap this in a
list method to translate the output from the
filter method to a list.
Then we apply our standard formula for calculating the average of our new
To calculate the average of a list of numbers in Python, without importing any libraries, we use the
sum function and then
len function, and divide the
sum total by the total number of elements (value returned from
len) in our list.
We do have to be careful to check for lists that may not contain any values, and it would be wise to place a condition to check the length of the list contains values.
Finally, we performed one other check on our list to make sure it contained numeric values to be able to calculate our simple average.