# Finding median of list in Python

## Finding median of list in Python

Python 3.4 has `statistics.median`:

Return the median (middle value) of numeric data.

When the number of data points is odd, return the middle data point.
When the number of data points is even, the median is interpolated by taking the average of the two middle values:

``````>>> median([1, 3, 5])
3
>>> median([1, 3, 5, 7])
4.0
``````

Usage:

``````import statistics

items = [6, 1, 8, 2, 3]

statistics.median(items)
#>>> 3
``````

Its pretty careful with types, too:

``````statistics.median(map(float, items))
#>>> 3.0

from decimal import Decimal
statistics.median(map(Decimal, items))
#>>> Decimal(3)
``````

(Works with ):

``````def median(lst):
n = len(lst)
s = sorted(lst)
return (s[n//2-1]/2.0+s[n//2]/2.0, s[n//2])[n % 2] if n else None
``````

``````>>> median([-5, -5, -3, -4, 0, -1])
-3.5
``````

``````>>> from numpy import median
>>> median([1, -4, -1, -1, 1, -3])
-1.0
``````

``````>>> from statistics import median
>>> median([5, 2, 3, 8, 9, -2])
4.0
``````

#### Finding median of list in Python

The `sorted()` function is very helpful for this. Use the sorted function
to order the list, then simply return the middle value (or average the two middle
values if the list contains an even amount of elements).

``````def median(lst):
sortedLst = sorted(lst)
lstLen = len(lst)
index = (lstLen - 1) // 2

if (lstLen % 2):
return sortedLst[index]
else:
return (sortedLst[index] + sortedLst[index + 1])/2.0
``````