Ordenar una lista en Python con sorted
Una lista en Python puede ser ordenada de una manera muy sencilla usando sorted de esta manera el bloque siguiente muestra una lista de números no ordenada.
my_lista = [7, 4, 6, 9, 8, 15]
sorted(my_lista)
El resultado sería el siguiente :
[4, 6, 7, 8, 9, 15]
Una lista de nombres ordenada
Una lista de nombre puede ser ordenada con sorted de esta manera el bloque siguiente muestra una lista de nombres no ordenada.
my_lista = ["Marco", "Pedro", "Juan", "Sonia"]
sorted(my_lista)
El resultado sería el siguiente :
['Juan', 'Marco', 'Pedro', 'Sonia']
Si es necesario ordenar la lista en orden inverso ocupamos reverse como se muestra :
my_lista = ["Marco", "Pedro", "Juan", "Sonia"]
sorted(my_lista, reverse=True)
El resultado es el siguiente :
['Sonia', 'Pedro', 'Marco', 'Juan']
Como es posible ordenar en ascendente y descendente e una lista también podemos ordenar los nombre por el número de letras usando keyde la forma siguiente :
my_lista = ["Marco", "Pedro", "Juan", "Sonia"]
sorted(my_lista, key=len)
El resultado es el siguiente :
['Juan', 'Marco', 'Pedro', 'Sonia']
Es posible apreciar que el orden es alfabético y por la longitud de letras ocupadas. En el caso de tener oraciones es posible ordenarla y separarla por ejemplo :
my_en = "Convertir unidades de medida es sencillo"
sorted(my_en.split(), key=len)
El resultado es el siguiente :
['de', 'es', 'medida', 'unidades', 'sencillo', 'Convertir']
También es posible ordenar mediante reverse como se muestra :
my_en = "Convertir unidades de medida es sencillo"
sorted(my_en.split(), key=len, reverse=True)
Un ejemplo con mayor complejidad es :
calificaciones_alumnos = [
('Pedro', 60, 'Matematicas'),
('Marco', 80, 'Musica'),
('Emily', 100, 'Musica'),
]
Usando sorted y lambda como se muestra en el bloque de código siguiente :
sorted(calificaciones_alumnos, key=lambda estudiante:estudiante[1], reverse=True)
El resultado que se obtiene es el siguiente :
[('Emily', 100, 'Musica'), ('Marco', 80, 'Musica'), ('Pedro', 60, 'Matematicas')]
