Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/04/2012, 08:37
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Python Ordenamiento numérico de una lista Alfanumérica

Pues para ordenar una lista usas lista.sort() si querés que se ordene la lista misma, o sorted(lista) si querés que se devuelva una lista nueva ordenada en vez de modificar la original.

Ambas funciones toman un parámetro opcional que indica la función que debe usarse para la comparación.

Por ejemplo, yo lo haría así:

Código Python:
Ver original
  1. def compara(a, b):
  2.     pos_punto_a = a.find('.')
  3.     pos_punto_b = b.find('.')
  4.  
  5.     numero_a = int(a[2:pos_punto_a])
  6.     numero_b = int(b[2:pos_punto_b])
  7.  
  8.     if numero_a < numero_b:
  9.         retorno = -1
  10.     elif numero_a == numero_b:
  11.         retorno = 0
  12.     else:
  13.         retorno = 1
  14.  
  15.     return retorno
  16.  
  17. lista_ordenada = sorted(lista, cmp=compara) # ->genera nueva lista ordenada
  18. lista.sort(cmp=compara) # -> ordena la lista


Saludos