Python Lista sort() con ejemplos

โšก Resumen inteligente

Python La funciรณn `list sort()` ordena los elementos de una lista en su lugar, de forma ascendente por defecto o descendente mediante el parรกmetro `reverse`, mientras que una funciรณn opcional `key` ordena segรบn criterios personalizados como la longitud, los campos de tupla o funciones definidas por el usuario.

  • ๐Ÿ”˜ Sintaxis: El mรฉtodo sort() acepta parรกmetros opcionales de clave e inversiรณn y modifica la lista original sin crear una copia.
  • โ˜‘๏ธ Control de pedidos: Si se establece el parรกmetro inverso en Verdadero, los valores se ordenan de mayor a menor en lugar del orden ascendente predeterminado.
  • โœ… Parรกmetro clave: Una funciรณn clave como len ordena los elementos segรบn un valor derivado, como la longitud de una cadena o un campo de tupla.
  • ๐Ÿงช ordenar vs ordenado: El mรฉtodo sort() modifica la lista directamente y devuelve None, mientras que sorted() devuelve una nueva lista y conserva la original.
  • ๐Ÿ› ๏ธ Criterios personalizados: Las expresiones lambda y las funciones definidas por el usuario permiten que sort() ordene tuplas, diccionarios y tuplas con nombre segรบn cualquier atributo elegido.
  • ๐Ÿค– Flujos de trabajo de IA: Los sistemas de aprendizaje automรกtico ordenan las predicciones por puntuaciรณn y seleccionan los mejores resultados antes de clasificarlos o evaluarlos.

Python Ordenar lista()

ยฟQuรฉ es el mรฉtodo sort() en Python?

La funciรณn sort() en Python Ayuda a ordenar una lista en orden ascendente o descendente. Se puede usar para ordenar listas numรฉricas, tuplas y listas de cadenas. No crea una lista nueva, sino que modifica u ordena la original.

Sintaxis del mรฉtodo Sort en Python

La funciรณn de ordenaciรณn tiene la siguiente sintaxis:

List.sort(key=โ€ฆ, reverse=โ€ฆ)

La funciรณn de ordenaciรณn tiene dos parรกmetros opcionales, a saber:

  • Clave: โ€“ Se utiliza para ordenar una funciรณn segรบn un criterio de clasificaciรณn.
  • Reverseโ€“ Toma el valor como verdadero o falso. Si es verdadero, esta funciรณn personalizada ordena la lista en orden descendente.

Ordenar una lista en orden ascendente utilizando el mรฉtodo Ordenar en Python

In Python, la funciรณn de clasificaciรณn, de forma predeterminada, ordena cualquier lista en orden ascendente. Una lista en orden ascendente tiene el valor mรกs bajo en el lado izquierdo y el valor mรกs alto en el lado derecho.

Ejemplo:

Python cรณdigo:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Salida:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Explicaciรณn:

  • La lista anterior es una lista de cadenas definida aleatoriamente.
  • La funciรณn de clasificaciรณn de Python ayuda a ordenar la lista aleatoria en orden ascendente, con la longitud mรกs baja de la palabra en el lado izquierdo y la longitud mรกs alta de la palabra en el lado derecho.

Ordenar una lista en orden descendente

La funciรณn de clasificaciรณn tambiรฉn permite ordenar una lista en orden descendente. Se puede definir como el orden. donde la lista comienza con el valor mรกs alto y termina con el valor mรกs bajo.

El parรกmetro inverso de la funciรณn de clasificaciรณn se asigna como verdadero para ordenar una lista en orden descendente.

Veamos el siguiente ejemplo:

Python cรณdigo:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Salida:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Nota: Asegรบrese de que la asignaciรณn de la palabra "Verdadero" al parรกmetro inverso comience con una "T" mayรบscula para evitar errores de tiempo de ejecuciรณn.

Ordenar una lista de tuplas usando el mรฉtodo Ordenar en Python

Python Tuples son colecciones de elementos inmutables que siguen una secuencia ordenada. PythonLa funciรณn de clasificaciรณn de puede usarse para ordenar una lista de tuplas usando una funciรณn personalizada y una expresiรณn lambda.

Se puede crear una funciรณn personalizada sin nombre y representarla mediante una expresiรณn lambda. A continuaciรณn se muestra la sintaxis para expresiones lambda:

Sintaxis:

Lambda arguments: expression

La sintaxis anterior es equivalente al siguiente cรณdigo Python:

def name (arguments):
return expression

Aquรญ hay un ejemplo de una tupla y una funciรณn personalizada para ilustrar cรณmo una funciรณn de ordenaciรณn con parรกmetros clave ayuda a ordenar los elementos en una tupla:

Python cรณdigo:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Salida:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Explicaciรณn:

  • El parรกmetro inverso se define como verdadero para ordenar la tupla en orden descendente.
  • La funciรณn personalizada toma el segundo elemento de la tupla.
  • Esto se utiliza como clave de la funciรณn de clasificaciรณn.

Veamos el siguiente ejemplo que utiliza la expresiรณn lambda:

Python cรณdigo:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Salida:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Explicaciรณn:

  • La expresiรณn lambda le ayuda a ordenar los elementos de la tupla de mayor a menor con la clave como segundo elemento de la tupla.
  • El programa comprobarรก el valor mรกs alto del segundo elemento de la tupla.

Ordenar elementos de la lista usando Len como parรกmetro clave

Len es una funciรณn integrada que determina la longitud del elemento. La longitud determinada se puede utilizar para la indexaciรณn en la funciรณn de ordenaciรณn. Para ello, asignamos Len a la Python parรกmetro clave de la funciรณn de clasificaciรณn.

Las siguientes Python El cรณdigo ilustra cรณmo utilizar la funciรณn Len con la funciรณn de clasificaciรณn.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Salida:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Explicaciรณn:

Ordenar elementos de la lista usando Len

  • La longitud del elemento se convierte en un รญndice para que el parรกmetro clave organice la lista en orden ascendente.
  • La funciรณn Len estima la longitud de cada elemento presente en la lista base.
  • Mantiene el elemento mรกs corto en el lado izquierdo y el elemento mรกs grande en el lado derecho.
  • Aquรญ, las palabras alto y java tienen longitudes de 4, que estรกn dispuestas primero en la lista, seguidas de Guru99, que tiene una longitud de 6.

Este ejemplo ilustra el concepto del parรกmetro inverso en la funciรณn de ordenaciรณn, como se muestra a continuaciรณn:

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Salida:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Ordenar elementos de la lista utilizando la funciรณn definida por el usuario como parรกmetro clave

Tambiรฉn puedes usar una funciรณn definida por el usuario como parรกmetro clave para ordenar una lista. Aquรญ tienes un ejemplo:

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Salida:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Explicaciรณn:

  • Se crea una funciรณn definida por el usuario para devolver el aรฑo.
  • El parรกmetro clave toma como criterio una funciรณn definida por el usuario.
  • La funciรณn de clasificaciรณn organizarรก la lista en orden ascendente segรบn el valor del elemento "aรฑo".

Diferencia entre el mรฉtodo de clasificaciรณn y el mรฉtodo ordenado en Python

Tras analizar los ejemplos anteriores, resulta รบtil comparar directamente las dos herramientas de ordenaciรณn. Antes de resumir las diferencias, comprendamos la sintaxis del mรฉtodo Sorted.

Python Sintaxis:

sorted (list_name, reverse=โ€ฆ., key=..)

Code Explicaciรณn:

  • La funciรณn ordenada ordena la lista en orden ascendente o descendente.
  • La funciรณn acepta tres parรกmetros, de los cuales dos parรกmetros son de tipo opcional y un parรกmetro es de tipo requerido.
  • El parรกmetro list_name es obligatorio cuando se utiliza el mรฉtodo Ordenado.
  • El mรฉtodo Ordenado puede tomar cualquier tipo de lista iterable como entrada.
  • Los parรกmetros clave y los parรกmetros inversos son parรกmetros opcionales segรบn el mรฉtodo ordenado en Python.

A continuaciรณn se muestra un ejemplo del uso de la funciรณn ordenar y ordenar en Python:

Python cรณdigo:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Salida:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Explicaciรณn:

  • La lista original se pasa como parรกmetro obligatorio para la funciรณn ordenada.
  • El mรฉtodo Ordenado devuelve una nueva lista ademรกs de la lista original.
  • Dado que no se pasan parรกmetros adicionales al mรฉtodo ordenado, la nueva lista se ordena de forma predeterminada en orden ascendente.
  • La funciรณn de clasificaciรณn no crea ninguna lista nueva.

A continuaciรณn se detallan los puntos clave sobre similitudes y diferencias:

funciรณn ordenada Funciรณn de clasificaciรณn
Funciรณn ordenada en Python es una funciรณn incorporada que toma list_name como parรกmetro obligatorio. La funciรณn de clasificaciรณn no toma la lista original como parรกmetro.
El mรฉtodo ordenado devuelve una nueva lista La funciรณn de clasificaciรณn no devuelve una nueva lista
La funciรณn ordenada debe usarse para listas iterables La funciรณn de clasificaciรณn debe usarse para listas no iterables.
No modifica la lista original y nos permite conservar los datos originales. La funciรณn de clasificaciรณn modifica la funciรณn original y, por tanto, ocupa menos espacio de memoria.

ยฟCuรกndo utilizar el mรฉtodo ordenado o el mรฉtodo de clasificaciรณn?

Tomemos un ejemplo que requiere ordenar los datos de la carrera. El programa utiliza el nรบmero de dorsal y el tiempo necesario en segundos para terminar la carrera.

Python cรณdigo:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Salida:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Explicaciรณn:

  • La lista base se ordena utilizando tanto la funciรณn de clasificaciรณn como la funciรณn de clasificaciรณn.
  • La lista base se pierde cuando se aplica la funciรณn de clasificaciรณn.
  • La funciรณn de clasificaciรณn no debe aplicarse al conjunto de datos original. Debe utilizarse cuando exista una versiรณn copia del conjunto de datos original.
  • La funciรณn Ordenada conserva la lista original. No lo anula.
  • Esto ofrece mejores tracCapacidad y gestiรณn eficaz de datos.

Preguntas Frecuentes

Pasa `key=str.lower` al mรฉtodo `sort()`, por ejemplo, `names.sort(key=str.lower)`. Cada cadena se compara en minรบsculas, por lo que "Apple" y "banana" se ordenan alfabรฉticamente sin importar si usan mayรบsculas o minรบsculas. El formato original de cada elemento se conserva en la lista final ordenada.

Ordenar una lista de todos los nรบmeros o todas las cadenas funciona, pero mezclar tipos no relacionados, como enteros y cadenas, genera un TypeError, porque Python No se pueden comparar. Primero, convierta los valores a un tipo comparable o pase una funciรณn clave que devuelva claves comparables.

Python Histรณricamente, se utilizaba Timsort, un algoritmo hรญbrido de ordenaciรณn por fusiรณn e inserciรณn. Desde la versiรณn 3.11, el intรฉrprete utiliza Powersort, una variante derivada de Timsort con una polรญtica de fusiรณn mรกs inteligente. Ambos son estables y se ejecutan en tiempo O(n log n) en el peor de los casos.

Sรญ. El mรฉtodo `sort()` es estable, por lo que los elementos que coinciden conservan su orden relativo original. Esto permite ordenar por varios criterios en etapas, comenzando por la clave menos importante y terminando con la mรกs importante.

El mรฉtodo sort() se ejecuta en tiempo O(n log n) en los casos mรกs desfavorables y promedio. En datos que ya estรกn mayormente ordenados, se aproxima a O(n), porque el algoritmo subyacente detecta y reutiliza secuencias ordenadas existentes en lugar de volver a ordenarlas.

Se pasa una clave que convierte cada elemento durante la comparaciรณn, por ejemplo, `nums.sort(key=int)`. La lista se ordena entonces por valor numรฉrico en lugar de por carรกcter, por lo que '10' se ordena correctamente despuรฉs de '9'. Los elementos almacenados permanecen como cadenas; solo la comparaciรณn utiliza su valor entero.

La ordenaciรณn organiza las predicciones por puntuaciรณn o probabilidad, selecciona los k mejores resultados en los sistemas de clasificaciรณn y recomendaciรณn, y ordena los registros durante la preparaciรณn de datos. Los procesos de aprendizaje automรกtico suelen ordenar los valores de las caracterรญsticas o las salidas del modelo antes de la evaluaciรณn, por lo que el mรฉtodo `sort()` integrado es un paso de preprocesamiento comรบn.

Sรญ. GitHub Copilot y los asistentes de IA con capacidad de agente generan llamadas a `sort()` y `sorted()`, incluyendo funciones clave y expresiones lambda, a partir de un comentario breve. Pueden refactorizar bucles en sentencias de ordenaciรณn individuales, aunque conviene probar el orden y confirmar el resultado en casos lรญmite.

Resumir este post con: