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: