Python – Diferencia entre sorted() y sort()

Ordenar significa reorganizar una secuencia dada de elementos de acuerdo con un operador de comparación en los elementos. El operador de comparación se utiliza para decidir el nuevo orden del elemento en la estructura de datos respectiva.
Por ejemplo: La siguiente lista de caracteres está ordenada en orden creciente de sus valores ASCII. Es decir, el carácter con menor valor ASCII se colocará primero que el carácter con mayor valor ASCII.
 

python-sorting

En Python, ordenar cualquier secuencia es muy fácil ya que proporciona métodos integrados para ordenar. Dos de estos métodos son sorted() y sort(). Estos dos métodos se utilizan para la clasificación, pero son bastante diferentes a su manera. Echemos un vistazo a ellos uno por uno.
 

ordenado()

El método sorted() ordena la secuencia dada, así como el conjunto y el diccionario (que no es una secuencia), ya sea en orden ascendente o descendente (hace una comparación Unicode para string carácter por carácter) y siempre devuelve una lista ordenada. Este método no afecta la secuencia original.
 

Sintaxis: sorted(iteraable, key, reverse=False)affect
Parámetros:  
Iterable: secuencia (lista, tupla, string) o colección (diccionario, conjunto, conjunto congelado) o cualquier otro iterador que necesite ser ordenado. 
Clave (opcional): una función que serviría como clave o base de comparación de clasificación. 
Inverso (opcional): si se establece en Verdadero, entonces el iterable se ordenará en orden inverso (descendente), por defecto se establece como Falso.
Tipo de devolución: devuelve una lista ordenada. 
 

Ejemplo 1:
 

Python3

# Python program to demonstrate
# sorted()
 
 
L = [1, 2, 3, 4, 5]
 
print("Sorted list:")
print(sorted(L))
 
print("\nReverse sorted list:")
print(sorted(L, reverse = True))
 
print("\nOriginal list after sorting:")
print(L)

Producción:
 

Sorted list:
[1, 2, 3, 4, 5]

Reverse sorted list:
[5, 4, 3, 2, 1]

Original list after sorting:
[1, 2, 3, 4, 5]

Ejemplo 2: ordenar diferentes tipos de datos
 

Python3

# Python program to demonstrate
# sorted()
 
 
# List
x = ['q', 'w', 'r', 'e', 't', 'y']
print(sorted(x))
   
# Tuple
x = ('q', 'w', 'e', 'r', 't', 'y')
print(sorted(x))
 
# String-sorted based on ASCII translations
x = "python"
print(sorted(x))
   
# Dictionary
x = {'q':1, 'w':2, 'e':3, 'r':4, 't':5, 'y':6}
print(sorted(x))
   
# Set
x = {'q', 'w', 'e', 'r', 't', 'y'}
print(sorted(x))

Producción:
 

['e', 'q', 'r', 't', 'w', 'y']
['e', 'q', 'r', 't', 'w', 'y']
['h', 'n', 'o', 'p', 't', 'y']
['e', 'q', 'r', 't', 'w', 'y']
['e', 'q', 'r', 't', 'w', 'y']

Usando el parámetro clave

Esta clave de parámetro opcional toma una función como su valor. Esta función clave transforma cada elemento antes de ordenar, toma el valor y devuelve 1 valor que luego se usa dentro de la ordenación en lugar del valor original.
Ejemplo: supongamos que queremos ordenar una lista de strings según su longitud. Esto se puede hacer pasando la función len() como valor al parámetro clave. A continuación se muestra la implementación.
 

Python3

# Python program to demonstrate
# sorted()
 
 
L = ['aaaa', 'bbb', 'cc', 'd']
 
# sorted without key parameter
print(sorted(L))
print()
 
# sorted with key parameter
print(sorted(L, key = len))

Producción:
 

['aaaa', 'bbb', 'cc', 'd']

['d', 'cc', 'bbb', 'aaaa']

clasificar()

La función sort() es muy similar a sorted() pero, a diferencia de sorted, no devuelve nada y realiza cambios en la secuencia original. Además, sort() es un método de clase de lista y solo se puede usar con listas.
 

Sintaxis: List_name.sort(key, reverse=False)
Parámetros:  
key: Una función que sirve como clave para la comparación de clasificación. 
inversa: si es verdadero, la lista se ordena en orden descendente.
Tipo de retorno: Ninguno 
 

Ejemplo 1:
 

Python3

# Python program to demonstrate
# sort()
 
 
# List of Integers
numbers = [1, 3, 4, 2]
   
# Sorting list of Integers
numbers.sort()
   
print(numbers)
   
# List of Floating point numbers
decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]
   
# Sorting list of Floating point numbers
decimalnumber.sort()
   
print(decimalnumber)
   
# List of strings
words = ["Geeks", "For", "Geeks"]
   
# Sorting list of strings
words.sort()
   
print(words)

Producción:
 

[1, 2, 3, 4]
[1.68, 2.0, 2.01, 3.28, 3.67]
['For', 'Geeks', 'Geeks']

Ejemplo 2: Clasificación en orden inverso.
 

Python3

# Python program to demonstrate
# sort()
 
 
# List of Integers
numbers = [1, 3, 4, 2]
   
# Sorting list of Integers
numbers.sort(reverse = True)
   
print(numbers)
   
# List of Floating point numbers
decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]
   
# Sorting list of Floating point numbers
decimalnumber.sort(reverse = True)
   
print(decimalnumber)
   
# List of strings
words = ["Geeks", "For", "Geeks"]
   
# Sorting list of strings
words.sort(reverse = True)
   
print(words)

Producción:
 

[4, 3, 2, 1]
[3.67, 3.28, 2.01, 2.0, 1.68]
['Geeks', 'Geeks', 'For']

Ejemplo 3: Usando el parámetro clave.
 

Python3

# Python program to demonstrate sorting by user's
# choice
   
# function to return the second element of the
# two elements passed as the parameter
def sortSecond(val):
    return val[1] 
   
# list1 to demonstrate the use of sorting 
# using  second key 
list1 = [(1, 2), (3, 3), (1, 1)]
   
# sorts the array in ascending according to 
# second element
list1.sort(key = sortSecond) 
print(list1)
   
# sorts the array in descending according to
# second element
list1.sort(key = sortSecond, reverse = True)
print(list1)

Producción:
 

[(1, 1), (1, 2), (3, 3)]
[(3, 3), (1, 2), (1, 1)]

 Veamos las diferencias en forma tabular -:

  ordenado() clasificar()
1. La función sorted() devuelve una lista ordenada del objeto iterable específico. El método sort() ordena la lista.
2. Podemos especificar un orden ascendente o descendente mientras usamos la función sorted() Ordena la lista en orden ascendente por defecto.
3.

Su sintaxis es:

sorted(iterable, key=key, reverse=reverse)

Su sintaxis es -:

list.sort(reverse=True|False, key=myFunc)

4. Su tipo de retorno es una lista ordenada. También podemos usarlo para ordenar una lista en orden descendente.
5. Solo puede ordenar una lista que contiene solo un tipo de valor. Ordena la lista en el lugar.

Publicación traducida automáticamente

Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *