Cómo ordenar listas en Python

How Sort Lists Python



Este artículo cubrirá una guía sobre cómo ordenar listas en Python. Un objeto de lista de Python es una colección de uno o más elementos separados por comas. Es un objeto iterable y se puede acceder a sus elementos iterando sobre la lista usando declaraciones de bucle y otras expresiones. Puede ordenar una lista de Python usando métodos ordenados y ordenados, ambos se explican en el artículo. Todos los ejemplos de código de este artículo se prueban con Python 3.9.5 en Ubuntu 21.04.

Método de clasificación

El método de clasificación ordena una lista en el lugar. En otras palabras, modificará el objeto de la lista que va a ordenar y reordenará su elemento. Si no necesita la lista original y no le importa que la lista cambie su orden de elementos en el lugar, este es el método más eficiente en Python para ordenar una lista. Considere este ejemplo:







los= [2, 8, 6, 4]

los.clasificar()

impresión (los)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:



[2, 4, 6, 8]

La primera declaración en el ejemplo de código define una lista. A continuación, se invoca el método de clasificación en la lista. Cuando imprime la lista, puede ver que se ha cambiado el orden de la lista original.



De forma predeterminada, Python ordena una lista en orden ascendente. Si desea ordenar una lista en orden descendente, use el método inverso, como se muestra en el ejemplo de código a continuación:





los= [2, 8, 6, 4]

los.clasificar()

los.marcha atrás()

impresión (los)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

[8, 6, 4, 2]

El método inverso también cambia una lista de Python en el lugar sin crear una nueva lista.



Si su lista contiene elementos de cadena, llamar al método de ordenación en ella la ordenará alfabéticamente donde los símbolos y números se ordenan primero. Eche un vistazo al ejemplo de código a continuación:

los= ['s', 'a', 'Con', '4', '#']

los.clasificar()
impresión (los)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

['#', '4', 'a', 's', 'Con']

También puede utilizar el método inverso en una lista que contenga elementos de cadena.

los= ['s', 'a', 'Con', '4', '#']

los.clasificar()

los.marcha atrás()

impresión (los)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

['Con', 's', 'a', '4', '#']

Método ordenado

El método ordenado también ordena una lista de Python, de la misma manera que el método de ordenación. Sin embargo, en lugar de modificar la lista original, devuelve una nueva lista para que su lista original no se modifique en caso de que desee reutilizarla. Considere el siguiente código:

list1= ['s', 'a', 'Con', '4', '#']

list2= ordenado(list1)

impresión (list1,list2)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

['s', 'a', 'Con', '4', '#'] ['#', '4', 'a', 's', 'Con']

Puede ver en la salida que list1 está intacto y list2 ahora tiene elementos ordenados. También puede utilizar el método inverso en list2 para cambiar su metodología de ordenación.

Argumento inverso

Puede utilizar el argumento inverso como alternativa a la función inversa en los métodos de ordenación y ordenación para obtener una lista ordenada en orden descendente. Simplemente proporcione un valor Verdadero para cambiar el orden de clasificación:

list1= ['s', 'a', 'Con', '4', '#']

list2= ordenado(list1,marcha atrás=Cierto)

impresión (list1,list2)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

['s', 'a', 'Con', '4', '#'] ['Con', 's', 'a', '4', '#']

Uso de la función de tecla para especificar su propia lógica para ordenar elementos de una lista

Tanto en los métodos sort como en los ordenados, puede especificar un argumento clave adicional que tome una función invocable como su valor. A este argumento clave se le puede asignar una función existente de los módulos integrados de Python o puede proporcionar su propia función con lógica personalizada. Eche un vistazo al ejemplo de código a continuación:

list1= ['a B C D e', 'xyz', 'ijkl']

list2= ordenado(list1,llave=len)

impresión (list1,list2)

lista1.clasificar(llave=len)

impresión (list1)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

['a B C D e', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'a B C D e']

['xyz', 'ijkl', 'a B C D e']

El ejemplo de código ilustra el uso del argumento clave tanto en el método ordenado como en el ordenado. La función que se le proporciona se llama len, que determina la longitud de un objeto de cadena o un iterable. La función o invocable debería tener originalmente un solo argumento. Lo asigna al argumento clave sin usar llaves. La función invocable proporcionada al argumento clave se invoca sobre cada elemento de la lista. Los valores devueltos por este método invocable se utilizan como clave para ordenar la lista. Por lo tanto, al suministrar la función len al argumento clave, se clasifican los elementos de una lista en el orden de su longitud, es decir, del más corto al más largo. Como se indicó anteriormente, siempre puede utilizar el método inverso para invertir la metodología de clasificación.

También puede usar su propia función personalizada o funciones lambda de una línea que devuelven el valor de una sola expresión. Eche un vistazo al ejemplo de código a continuación, donde una lista tiene tuplas del inventario actual de cajas de frutas:

list1= [('mango', 99), ('naranja', 51), ('Plátano', 76)]

lista1.clasificar(llave=lambdainventario: inventario[1])

impresión (list1)

Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

[('naranja', 51), ('Plátano', 76), ('mango', 99)]

La función lambda se suministra con un inventario de argumentos, que es cada elemento de la lista en forma de tupla. Luego devuelve el segundo elemento de cada tupla como clave (en el índice 1). Luego, la función de clasificación ordena todas las tuplas por su segundo elemento en orden ascendente. También puede utilizar la función inversa o el argumento inverso en el resultado final para invertir el orden de clasificación.

Conclusión

Estas son algunas de las formas en las que puede ordenar el contenido de una lista iterable en Python. El argumento clave le permite escribir su propia lógica de clasificación personalizada, adecuada para aplicaciones que pueden tener necesidades diferentes a las de los métodos de clasificación integrados.