# Finding the average of a list

## 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?

### Accepted Answer

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.

Read more… Read less…

You can use `numpy.mean`

:

```
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
import numpy as np
print(np.mean(l))
```

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)
```

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.)

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.

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

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