Foros del Web » Programando para Internet » Python »

Ordenar lista

Estas en el tema de Ordenar lista en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/10/2011, 10:37
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 13 años, 2 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
  #2 (permalink)  
Antiguo 09/10/2011, 11:05
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ordenar lista

Lo que pasa es que no estas copiando la lista.

Si no que a b le estas asignando la referencia de a.

Ejemplo
Código Python:
Ver original
  1. a = [1, 2, 3]
  2. id(a) #37434952
  3. b = a
  4. id(b) #37434952
a y b son la misma lista

En cambio
Código Python:
Ver original
  1. a = [1, 2, 3]
  2. b = a[:]
  3. id(a) #37434952
  4. id(b) #37408200
a y b son diferentes listas.
  #3 (permalink)  
Antiguo 09/10/2011, 11:16
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Ordenar lista

Muchas gracias razpeitia ;)
__________________
"Porque nada se...
quiero saberlo todo"

Etiquetas: lista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:07.