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.
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