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 key
de 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')]