I don't really understand your code at all, I'm sure there's many ways to do this, but I'll try to give some insight by explaining my method and hopefully you can apply it to your own.
taken_list = sorted(taken_list) #sorts the list
mid_point = (len(taken_list) / 2) #finds the mid point of the list
if len(taken_list) % 2 == 0: #finds "if" there's an even length of list, and if so;
return ((taken_list[mid_point - 1]) + (taken_list[mid_point])) / (2.0) #returns the equation. (see reasoning below)
return taken_list[mid_point] # if not even length of list (else) return the the value of the taken list at the index [mid_point]
Reason for the "even equation" ;
1. ( (1 down from midde) + (1 up from middle) ) / 2
2. list start at index 0, and length counts from 1, you don't need to +1 the second "(taken_list[mid_point])"
1. To make you code easier for others to understand, I'd advice against using 1 letter variable, and instead use variable that have descriptive names.
2. You can easier debug you code by using print.
For example I took your code and then under it used:
print median([4, 5, 5, 4]) #prints 4, should print 4.5
print median([0, 1, 2, 3, 4]) #prints 1, should print 2
From this it looks like you're code failing on both odd and even length lists, they both look to be giving less.
Sorry I couldn't be anymore help, but I hope this gives you hints as you'll understand your code more.