sábado, 4 de septiembre de 2021

Ordenar una lista con Python usando sorted

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

Licencia Creative Commons