Cómo ordenar una lista en Python (ascendente y descendente)

Aprenda a ordenar una lista en Python usando el método sort() y la función sorted(). Descubra ejemplos de ordenación inversa y clasificación de claves personalizadas.

Pruebe esta solución en el Editor

Descripción general

Ordenar datos es una de las tareas más comunes en programación, ya sea ordenar perfiles de usuario por edad, enumerar productos por precio u organizar resultados de búsqueda. Python ofrece dos formas integradas y altamente optimizadas de ordenar listas: el método `list.sort()` y la función `sorted()`. Ambos utilizan un algoritmo de clasificación altamente eficiente llamado Timsort, que se ejecuta en una complejidad temporal O (N log N).

La diferencia clave entre los dos es la mutabilidad. El método `list.sort()` ordena la lista in situ, lo que significa que modifica directamente la lista original y devuelve `Ninguno`. La función `sorted()`, por otro lado, deja la lista original sin cambios y devuelve una lista ordenada completamente nueva. Esta distinción es crucial: use `sort()` cuando desee ahorrar memoria y no necesite el orden original, y use `sorted()` cuando necesite mantener intacta la lista original o cuando ordene iterables que no pertenecen a la lista, como tuplas o diccionarios.

Ambos métodos de clasificación aceptan dos argumentos de palabras clave opcionales: "inverso" y "clave". El argumento "inverso" es un valor booleano; establecerlo en "True" ordena la lista en orden descendente (inverso). El argumento "clave" acepta una función que se aplica a cada elemento antes de la comparación. Esto permite una lógica de clasificación compleja, como ordenar una lista de cadenas por su longitud u ordenar una lista de diccionarios por una clave específica.

Código y salida de ejecución

Este código demuestra cómo ordenar una lista de números usando sort() y sorted(), ordenar a la inversa y ordenar con claves personalizadas por longitud de cadena.

numbers = [42, 7, 12, 89, 23]

# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)

# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)

# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)

# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)
Salida terminal
Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']

Implementación paso a paso

  • Utilice la función sorted() para ordenar una copia de la lista sin cambiar los datos originales.
  • Utilice el método .sort() directamente en el objeto de la lista para modificarlo en el lugar y ahorrar memoria.
  • Pase reverse=True como parámetro para ordenar los elementos en orden descendente.
  • Utilice key=lambda x: ... para ordenar elementos según una propiedad personalizada (como longitud o valores anidados).

Preguntas frecuentes

¿Cuál es la diferencia entre list.sort() y sorted()?

list.sort() modifica la lista in situ y devuelve Ninguno, mientras que sorted() deja la lista original sin cambios y devuelve una nueva lista ordenada.

¿Cómo se ordena una lista de diccionarios por clave?

Utilice el parámetro clave con una función lambda u operator.itemgetter. Por ejemplo: list.sort(clave=elemento lambda: elemento["edad"]).

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.