Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2011, 10:37
AlanFC
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Ordenar lista

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 original
  1. def mediana(a):
  2.     b = a
  3.     b.sort()
  4.     if len(a)%2!=0:
  5.         mediana = b[len(a)/2]
  6.     else:
  7.         mediana = (b[(len(a)/2)-1]+b[len(a)/2])/2
  8.     return mediana
  9.  
  10. a = [5.0, 1.4, 3.2, 0.1]
  11. 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 original
  1. def mediana(a):
  2.     b = a
  3.     lista = []
  4.     for A in range (len(a)):
  5.         c = min(b)
  6.         b.remove(c)
  7.         lista.append(c)
  8.     print lista
  9.     if len(a)%2!=0:
  10.         mediana = b[len(a)/2]
  11.     else:
  12.         mediana = (lista[(len(a)/2)-1]+lista[len(a)/2])/2
  13.     return mediana

Exitos!
__________________
"Porque nada se...
quiero saberlo todo"

Última edición por AlanFC; 09/10/2011 a las 10:59