Cómo ordenar listas en Python
Este artículo le enseñará cómo ordenar una lista en Python.
En Python, puede usar el ordenar() método para ordenar una lista en su lugar. O puede usar el incorporado ordenado () para obtener una copia ordenada de la lista.
En este tutorial, aprenderá:
- sintaxis de la
sort()
método y elsorted()
función - Ejemplos de código de clasificación de listas en orden ascendente y descendente
- Personalice la ordenación con el
key
parámetro - Diferencia entre
sort()
vssorted()
¡Comencemos! 👩🏽💻
Sintaxis del método Python sort()
El sort()
El método actúa en una lista de Python. Y ordena la lista en su lugar y modifica la lista original.
La sintaxis de Python sort()
el método es:
<list>.sort(reverse = True | False, key = <func>)
Analicemos ahora la sintaxis anterior.
<list>
es cualquier objeto de lista de Python válido.reverse
es un opcional parámetro que toma True o False.- El valor predeterminado de
reverse
isFalse
, y la lista se ordena en orden ascendente. DarTrue
para ordenar la lista en orden descendente. key
también es un opcional parámetro que se establece en<func>
.<func>
puede ser una función integrada o una función definida por el usuario.
En la siguiente sección, comenzará a codificar ejemplos simples.
Cómo ordenar la lista de Python en orden ascendente
Considere la lista nums
. Para ordenar la lista en orden ascendente, puede llamar al sort()
método de la lista.
▶ Ejecute el siguiente fragmento de código.
nums = [25,13,6,17,9]
nums.sort()
print(nums)
# Output: [6, 9, 13, 17, 25]
La lista nums
se ha ordenado en orden ascendente y se ha modificado la lista original. Se llama clasificación en el lugar.
Cómo ordenar la lista de Python en orden descendente
Para ordenar la lista en orden descendente, configure reverse
a True
, Como se muestra abajo.
nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)
# Output: [25, 17, 13, 9, 6]
Puede ver que la lista ahora está ordenada en orden descendente.
Cómo usar la clave con el método Python sort()
En esta sección, vamos a usar el key
parámetro y personalizar la ordenación.
Aquí, mod5()
es una función que toma un número x
, y devuelve el resto cuando el número x
se divide por 5.
def mod5(x):
return x % 5
Y nos gustaría usar la función anterior como el key
.
Ahora, ejecute la siguiente celda de código.
nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)
# Output: [25, 6, 17, 13, 9]
Tómese un minuto para analizar la salida.
Observe cómo en lugar de la clasificación regular, ahora está personalizando su clasificación de acuerdo con el key
cual es mod5
.
- El número que deja el residuo mínimo al dividirlo por 5 ahora es el primero.
- Y el número que deja el resto más grande cuando se divide por 5 es el último elemento en la lista ordenada.
Para verificar que este sea el caso, ejecute el siguiente fragmento de código.
nums = [25,13,6,17,9]
for num in nums:
print(f"{num} leaves remainder {num%5} when divided by 5")
# Output
25 leaves remainder 0 when divided by 5
13 leaves remainder 3 when divided by 5
6 leaves remainder 1 when divided by 5
17 leaves remainder 2 when divided by 5
9 leaves remainder 4 when divided by 5
5 divide exactamente a 25 y el resto es 0. Así que ese es el primer elemento en la lista ordenada. 6 deja un resto 1, por lo que es el segundo elemento, y así sucesivamente. 9 deja el resto 4 cuando se divide por 5, y es el último elemento en la lista ordenada.
En lugar de definir una función separada, también podría usar funciones lambda. En Python, las lambdas son funciones anónimas de una línea. argumentos lambda: expresión devuelve el expresión computado en el args.
Ahora, reescribamos la ordenación anterior usando la expresión lambda, como se muestra a continuación.
nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)
# Output: [25, 6, 17, 13, 9]
Hasta ahora, has aprendido a ordenar una lista de números. A continuación, veamos cómo puede ordenar una lista de cadenas en Python.
Cómo ordenar la lista de Python en orden alfabético
En esta sección, aprenderá a ordenar una lista de cadenas, con ejemplos inspirados en Harry Potter. ✨

En nuestro ejemplo, students
es una lista de estudiantes en Hogwarts. Y nos gustaría clasificarlos en el orden alfabético de sus nombres.
Al clasificar una lista de cadenas, la clasificación predeterminada es alfabética.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
Imprimamos la lista ordenada para verificar el resultado de la clasificación.
students.sort()
print(students)
# Output
['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
Cómo ordenar la lista de Python en orden alfabético inverso
Para ordenar la lista en orden alfabético inverso, configure reverse
= True
, como se muestra en el fragmento de código a continuación.
students.sort(reverse = True)
print(students)
# Output
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
A partir de la salida, puede ver que la lista se ha ordenado en orden inverso.
Cómo usar la clave Parámetro Personalizar Ordenar
En esta sección, vamos a personalizar la ordenación usando el opcional key
parámetro.
Considere la siguiente lista, houses
.
houses = [
{1:"Draco","house":"Slytherin"},
{2:"Harry","house":"Gryffindor"},
{3:"Cedric","house":"Hufflepuff"}
]
Aquí, houses
es una lista de diccionarios. Cada diccionario contiene dos pares clave-valor, uno que denota los nombres de los estudiantes y el otro la casa a la que pertenecen.
Ahora, nos gustaría ordenar esta lista casas existentes orden alfabético de las casas pertenecen a.
Como ya habrás adivinado, deberíamos configurar el key
parámetro a la casa de los estudiantes particulares.
Para recuperar la casa de cada estudiante, puede definir una función returnHouse()
, Como se muestra abajo.
def returnHouse(student):
return student['house']
Esta función devuelve la casa a la que pertenece el estudiante en particular.
Ahora, puedes llamar al sort()
en la lista de casas, como se muestra.
houses.sort(key=returnHouse)
En el resultado a continuación, observe cómo la lista está ordenada por la casa y no por los nombres de los estudiantes. Por eso tenemos a Gryffindor, Hufflepuff y Slytherin, en orden alfabético.
print(houses)
# Output
[{2: 'Harry', 'house': 'Gryffindor'},
{3: 'Cedric', 'house': 'Hufflepuff'},
{1: 'Draco', 'house': 'Slytherin'}]
Para definir el key
parámetro en consecuencia, también podría usar una función lambda. Para cada elemento de la lista, esta función devuelve la casa para ese elemento de la lista.
▶ Ejecute la siguiente celda de código para verificar esto.
houses.sort(key=lambda student:student["house"])
print(houses)
# Output
[{2: 'Harry', 'house': 'Gryffindor'},
{3: 'Cedric', 'house': 'Hufflepuff'},
{1: 'Draco', 'house': 'Slytherin'}]
En todos los ejemplos hasta ahora, ha utilizado el sort()
método en una lista. Y ahora sabes que modifica la lista original.
¿Qué sucede si desea conservar la lista original tal como está pero obtener una copia ordenada de la lista?
Bueno, en Python, puedes usar el sorted()
función para hacer esto.
Sintaxis de la función Python sorted()
El sorted()
La función toma una lista o cualquier colección como argumento. Y devuelve una copia ordenada de la lista, y la lista original no se modifica.
La sintaxis de Python sorted()
la función es:
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
Observe cómo la sintaxis es muy similar a la sort()
método que vimos antes.
<list>
es cualquier objeto de lista de Python válido y es un Requisitos parámetro.reverse
ykey
están opcional parámetros
Nota: A diferencia del
sort()
método que actúa sólo sobre listas,sorted()
La función se puede usar para ordenar cualquier iterable de Python, como listas, cadenas y diccionarios.
Cómo ordenar la lista de Python usando la función sorted()
#1. En este ejemplo, nums
es una lista de números.
Puedes llamar al sorted()
funcionar con nums
como el argumento. Y asignarlo a la lista. sorted_nums1
.
nums = [25,13,6,17,9]
sorted_nums1 = sorted(nums)
print(sorted_nums1)
# Output: [6, 9, 13, 17, 25]
En el resultado de arriba, puedes ver que nums
se ha ordenado en orden ascendente de forma predeterminada.
Además, observe que la lista original nums
no se modifica—porque sorted()
devuelve una nueva lista. Esto se verifica a continuación.
print(nums)
# Output: [25, 13, 6, 17, 9]
#2. Ahora, establezca el parámetro opcional reverse
a True
y obten sorted_nums2
.
Como se muestra en la celda de código a continuación, sorted_nums2
es una nueva lista con los elementos ordenados en orden descendente.
sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)
# Output: [25, 17, 13, 9, 6]
#3. En este ejemplo, trabajemos con una lista de cadenas.
Al igual que con los ejemplos anteriores, llamando al sorted()
La función devuelve una nueva lista. Y los elementos se ordenan en orden alfabético.
fruits = ['pears','strawberry','apple','pineapple','blueberry']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)
# Output:
['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. Ahora, personalicemos la ordenación usando el opcional key
parámetro. Selecciona el key
a len
. Esto ordenará la lista según la longitud de las cadenas.
Nota: En Python, el integrado
len()
La función acepta cualquier iterable, como listas, cadenas, tuplas, etc. Y devuelve la longitud del iterable.
La cadena con la longitud más corta aparece primero en la lista ordenada y la cadena más larga aparece al final de la lista ordenada.
fruits = ['pear','strawberry','apple','pineapple','blueberry']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)
# Output:
['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
En la salida de arriba, pera es la cuerda más corta, y fresa es la cadena más larga.
También puede leer cómo invertir una lista en Python para hacerla girar hacia atrás.
Método sort() de Python frente a función sorted()
Hasta ahora, has aprendido a usar el sort()
método así como el sorted()
función. En esta sección, vamos a enumerar las diferencias entre estos dos métodos.
Método Python .sort() | Función Python sorted () |
Ordena la lista en su lugar: modifica la lista original | Devuelve una nueva lista ordenada |
Funciona solo con listas de Python | Funciona con iterables de Python, como listas, cadenas y otras colecciones. |
Tiene tipo de retorno de None | Devuelve una copia ordenada del iterable. |
Resumiendo 👩🏫
Espero que hayas encontrado útil este tutorial de listas de Python.
Resumamos rápidamente lo que hemos cubierto.
- Uso list.sort(reverse = True | False, key = ) con el opcional marcha atrás y clave parámetros para ordenar una lista en su lugar.
- Uso sorted(list, reverse = True | False, key = ) para obtener una copia ordenada de la lista.
Ahora que ha aprendido a ordenar listas de Python, aprenda sobre lista de comprensión en Python. O también podrías aprender como manejar archivos or trabajar con archivos JSON en Python.
Puede probar los ejemplos dados anteriormente en el Compilador de Python en línea de Geekflare.