Ordenar listas en Python

En este post vamos a ver distintos métodos y formas de ordenar arreglos o listas en el lenguaje de programación Python.

No vamos a ver cuál es más eficiente, solo vamos a ver los métodos nativos y los métodos manuales, aunque me parece que los métodos nativos (algoritmo Timsort) serán más rápidos y eficientes la mayoría de veces.

Ordenar listas en Python

Nota: como en otros tutoriales de Python, en este caso me referiré a lista y arreglo como lo mismo.

Ordenar usando sort

La forma más fácil y eficiente de ordenar un arreglo en Python es usando funciones nativas. Comencemos viendo la función sort. Esta función modifica internamente a la lista, de modo que no debemos esperar el valor de retorno.

La función ordena listas de datos primitivos como enteros, flotantes y cadenas. La sintaxis es:

lista.sort()

Te repito que la función no devuelve nada; ordena internamente al arreglo. Veamos el siguiente ejemplo:

# https://parzibyte.me/blog

nombres = ["Luis", "María", "Pedro", "Mario", "Leon", "Claire"]
edades = [6, 23, 6, 1, 2, 3, 4]
print("Nombres originalmente: ")
print(nombres)
print("Edades originalmente: ")
print(edades)

# Los ordenamos. sort los ordena internamente, es decir, no regresa nada
nombres.sort()
edades.sort()

print("Nombres ordenados: ")
print(nombres)
print("Edades ordenadas: ")
print(edades)


"""
Salida:

Nombres originalmente:
['Luis', 'María', 'Pedro', 'Mario', 'Leon', 'Claire']
Edades originalmente:
[6, 23, 6, 1, 2, 3, 4]
Nombres ordenados:
['Claire', 'Leon', 'Luis', 'Mario', 'María', 'Pedro']
Edades ordenadas:
[1, 2, 3, 4, 6, 6, 23]
"""

Como se puede observar en la salida, al invocar a sort tendremos el arreglo ya ordenado. Esto no nos conviene si queremos preservar el original, pero para ello veremos una función a continuación.

Sobre sorted: ordenar y regresar arreglo

Ahora veamos la función sorted. Esta función igualmente es nativa pero no modifica a la lista; sino que regresa el resultado. Funciona así:

# https://parzibyte.me/blog

nombres = ["Luis", "María", "Pedro", "Mario", "Leon", "Claire"]
edades = [6, 23, 6, 1, 2, 3, 4]
print("Nombres originalmente: ")
print(nombres)
print("Edades originalmente: ")
print(edades)

# Los ordenamos. sorted los ordena y devuelve
nombres_ordenados = sorted(nombres)
edades_ordenadas = sorted(edades)

print("Nombres ordenados: ")
print(nombres_ordenados)
print("Edades ordenadas: ")
print(edades_ordenadas)


"""
Salida:

Nombres originalmente:
['Luis', 'María', 'Pedro', 'Mario', 'Leon', 'Claire']
Edades originalmente:
[6, 23, 6, 1, 2, 3, 4]
Nombres ordenados:
['Claire', 'Leon', 'Luis', 'Mario', 'María', 'Pedro']
Edades ordenadas:
[1, 2, 3, 4, 6, 6, 23]
"""

El ordenamiento es el mismo, lo que cambia es que esta función no ordena internamente, sino que lo ordena y regresa la copia ordenada.

Otra cosa distinta es que en este caso la función no es invocada a partir del arreglo, sino que se le envía el arreglo a la función.

Orden inverso

Por defecto, la función sorted y sort ordenan de manera ascendente; es decir, de menor a mayor ya sea numérica o alfabéticamente. Para invertir el orden podemos pasar la opción reverse.

Veamos el siguiente ejemplo:

# https://parzibyte.me/blog

nombres = ["Luis", "María", "Pedro", "Mario", "Leon", "Claire"]
edades = [6, 23, 6, 1, 2, 3, 4]
print("Nombres originalmente: ")
print(nombres)
print("Edades originalmente: ")
print(edades)

# Los ordenamos; uno con sort y otro con sorted para demostrar el orden inverso
nombres_ordenados = sorted(nombres, reverse=True)
edades.sort(reverse=True)

print("Nombres ordenados: ")
print(nombres_ordenados)
print("Edades ordenadas: ")
print(edades)


"""
Salida:
Nombres originalmente:
['Luis', 'María', 'Pedro', 'Mario', 'Leon', 'Claire']
Edades originalmente:
[6, 23, 6, 1, 2, 3, 4]
Nombres ordenados:
['Pedro', 'María', 'Mario', 'Luis', 'Leon', 'Claire']
Edades ordenadas:
[23, 6, 6, 4, 3, 2, 1]
"""

En este caso indicando el argumento reverse en True, el arreglo será ordenado de manera inversa, es decir, descendente o de mayor a menor, tanto para strings como para enteros y flotantes.

Otras funciones de ordenamiento

Hasta el momento hemos visto cómo ordenar arreglos usando sort y sorted, ya sea de enteros o cadenas y de manera ascendente o descendente.

Sin embargo la vida real es más compleja así que te dejo otros tutoriales si por ejemplo tu profesor te solicita implementar el algoritmo quicksort, burbuja, merge sort o selección. También puede que quieras ordenar un arreglo complejo, por ejemplo, uno de diccionarios.

Te dejo también más tutoriales de Python.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “Ordenar listas en Python”

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *