## Finding the average of a list

### Question

I have to find the average of a list in Python. This is my code so far

``````l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print reduce(lambda x, y: x + y, l)
``````

I've got it so it adds together the values in the list, but I don't know how to make it divide into them?

2012/01/27
1
493
1/27/2012 9:15:16 PM

On Python 3.4+ you can use `statistics.mean()`

``````l = [15, 18, 2, 36, 12, 78, 5, 6, 9]

import statistics
statistics.mean(l)  # 20.11111111111111
``````

On older versions of Python you can do

``````sum(l) / len(l)
``````

On Python 2 you need to convert `len` to a float to get float division

``````sum(l) / float(len(l))
``````

There is no need to use `reduce`. It is much slower and was removed in Python 3.

2019/11/13
598
11/13/2019 1:30:12 AM

You can use `numpy.mean`:

``````l = [15, 18, 2, 36, 12, 78, 5, 6, 9]

import numpy as np
print(np.mean(l))
``````
2019/11/13

A statistics module has been added to python 3.4. It has a function to calculate the average called mean. An example with the list you provided would be:

``````from statistics import mean
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
mean(l)
``````
2014/01/12

Why would you use `reduce()` for this when Python has a perfectly cromulent `sum()` function?

``````print sum(l) / float(len(l))
``````

(The `float()` is necessary to force Python to do a floating-point division.)

2012/01/27

There is a statistics library if you are using python >= 3.4

https://docs.python.org/3/library/statistics.html

You may use it's mean method like this. Let's say you have a list of numbers of which you want to find mean:-

``````list = [11, 13, 12, 15, 17]
import statistics as s
s.mean(list)
``````

It has other methods too like stdev, variance, mode, harmonic mean, median etc which are too useful.

2017/05/11

Instead of casting to float, you can add 0.0 to the sum:

``````def avg(l):
return sum(l, 0.0) / len(l)
``````
2014/02/06