In Desarrollo Última actualización:
Comparte en:
Cloudways ofrece alojamiento en la nube administrado para empresas de cualquier tamaño para alojar un sitio web o aplicaciones web complejas.

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 el sorted() 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() vs sorted()

¡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 is False, y la lista se ordena en orden ascendente. Dar True 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 y key 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 originalDevuelve una nueva lista ordenada
Funciona solo con listas de PythonFunciona con iterables de Python, como listas, cadenas y otras colecciones.
Tiene tipo de retorno de NoneDevuelve 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.

Comparte en:
  • Bala Priya C.
    Autor
    Bala Priya es un desarrollador y escritor técnico de India con más de tres años de experiencia en el espacio de redacción de contenido técnico. Comparte su aprendizaje con la comunidad de desarrolladores mediante la creación de tutoriales técnicos, guías prácticas y más...

Gracias a nuestros patrocinadores

Más lecturas interesantes sobre el desarrollo

Impulse su negocio

Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • La herramienta de conversión de texto a voz que utiliza IA para generar voces realistas parecidas a las humanas.

    Prueba la IA de Murf
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.

    Prueba Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno para ayudarlo a administrar proyectos, tareas, trabajo, ventas, CRM, operaciones, workflows, y más.

    Intente Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.

    Intente Intruder