Debo hacer una funcion que me permita calcular la mediana de una lista de numeros.
Pero el reto es que la lista inicial no sea alterada...es decir...sin usar el sort a la lista inicial.
Lo que intente, es crear otra lista igual a la inicial, y a ella aplicar el sort, pero de todas formas me altera la lista inicial...porque pasa eso?
Código Python:
Ver originaldef mediana(a):
b = a
b.sort()
if len(a)%2!=0:
mediana = b[len(a)/2]
else:
mediana = (b[(len(a)/2)-1]+b[len(a)/2])/2
return mediana
a = [5.0, 1.4, 3.2, 0.1]
print mediana(a)
EDITO:
Ahora probe con otro codigo, e igualmente me altera la lista inicial, siendo que estoy trabajando con otra lista aparte "copiada" a la original.
Finalmente me queda la lista "a" sin ningun elemento, siendo que a la lista b estoy aplicandole el remove.
Código Python:
Ver originaldef mediana(a):
b = a
lista = []
for A in range (len(a)):
c = min(b)
b.remove(c)
lista.append(c)
print lista
if len(a)%2!=0:
mediana = b[len(a)/2]
else:
mediana = (lista[(len(a)/2)-1]+lista[len(a)/2])/2
return mediana
Exitos!