Cómo ordenar las listas en Python

Cómo ordenar las listas en Python

Este artículo cubrirá una guía sobre las listas de clasificación en Python. Un objeto de la lista de Python es una colección de uno o más elementos separados por coma. Es un objeto "iterable" y se puede acceder a sus elementos iterando a través de la lista utilizando declaraciones de bucle y otras expresiones. Puede ordenar una lista de Python utilizando métodos "clasificados" y "ordenados", ambos se explican en el artículo. Todas las muestras de código en 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 clasifica una lista "In-Place". En otras palabras, modificará el objeto de lista que va a ordenar y reordenar su elemento. Si no requiere 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:

l = [2, 8, 6, 4]
l.clasificar()
Imprimir (L)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

[2, 4, 6, 8]

La primera declaración en la muestra de código define una lista. A continuación, se llama al método de "ordenar" a la lista. Cuando imprime la lista, puede ver que el pedido de la lista original ha sido cambiado.

Por defecto, Python clasifica una lista en orden ascendente. Si desea ordenar una lista en orden descendente, use el método "reverso", como se muestra en la muestra de código a continuación:

l = [2, 8, 6, 4]
l.clasificar()
l.contrarrestar()
Imprimir (L)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

[8, 6, 4, 2]

El método "reverso" 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 "ordenar" lo ordenará alfabéticamente donde se ordenan primero los símbolos y los números. Eche un vistazo a la muestra de código a continuación:

l = ["S", "A", "Z", "4", "#"]
l.clasificar()
Imprimir (L)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

['#', '4', 'A', 'S', 'Z']

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

l = ["S", "A", "Z", "4", "#"]
l.clasificar()
l.contrarrestar()
Imprimir (L)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

['Z', 'S', 'A', '4', '#']

Método ordenado

El método ordenado también clasifica una lista de Python, de la misma manera que el método de "ordenar". Sin embargo, en lugar de modificar la lista original, devuelve una nueva lista para que su lista original quede intacta en caso de que desee reutilizarla. Considere el código a continuación:

list1 = ["s", "a", "z", "4", "#"]
list2 = sorted (list1)
Imprimir (List1, List2)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

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

Puede ver en la salida que "list1" está intacta y "list2" ahora tiene elementos ordenados. También puede usar el método "Reverse" en "List2" para cambiar su metodología de pedido.

Argumento inverso

Puede usar el argumento "inversa" como una alternativa a la función inversa en los métodos de "clasificar" y "clasificar" para obtener una lista ordenada en orden descendente. Simplemente suministre un valor "verdadero" para cambiar el orden de clasificación:

list1 = ["s", "a", "z", "4", "#"]
list2 = sorted (list1, reverse = true)
Imprimir (List1, List2)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

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

Uso de la función clave para especificar su propia lógica para clasificar los elementos de una lista

Tanto en los métodos "clasificados" como "ordenados", puede especificar un argumento adicional de "clave" que toma una función invocable como su valor. A este argumento clave se le puede asignar una función existente desde los módulos Python incorporados o puede suministrar su propia función con lógica personalizada. Eche un vistazo a la muestra de código a continuación:

list1 = ["abcde", "xyz", "ijkl"]
list2 = sorted (list1, key = len)
Imprimir (List1, List2)
Lista1.sort (clave = len)
Imprimir (List1)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']
['xyz', 'ijkl', 'abcde']

La muestra de código ilustra el uso del argumento de "clave" en los métodos "ordenados" y de "clasificar". La función suministrada se llama "len" que determina la longitud de un objeto de cadena o un iterable. La función o la llamada no deben tomar solo un argumento. Lo asigna al argumento "clave" sin usar aparatos ortopédicos. La función invocable suministrada a la "clave" se convoca a cada elemento de la lista. Los valores devueltos de este método llamable se utilizan como clave para clasificar la lista. Por lo tanto, suministrando la función "len" a la "clave" argumento de clasificación de elementos de una lista en el orden de su longitud, es decir, desde el más corto hasta el más largo. Como se indicó anteriormente, siempre puede usar el método "inversa" para revertir 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 a la muestra de código a continuación, donde una lista tiene tuplas de inventario actual de cajas de frutas:

list1 = [("mango", 99), ("naranja", 51), ("plátano", 76)]]
Lista1.Sort (Key = Lambda Inventory: Inventory [1])
Imprimir (List1)

Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

[('Orange', 51), ('Banana', 76), ('Mango', 99)]

La función "lambda" se suministra con un argumento "inventario", 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). La función de clasificación luego clasifica todas las tuplas por su segundo elemento en orden ascendente. También puede usar la función "inversa" o el argumento "reverso" en el resultado final para revertir el orden de clasificación.

Conclusión

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