Python ordenado ()

La función sorted () devuelve una lista ordenada de los elementos en un iterable.

La sorted()función ordena los elementos de un iterable dado en un orden específico (ya sea ascendente o descendente ) y devuelve el iterable ordenado como una lista.

La sintaxis de la sorted()función es:

 ordenado (iterable, clave = Ninguno, reverso = Falso)

Parámetros para la función sorted ()

sorted() puede tomar un máximo de tres parámetros:

  • iterable : una secuencia (cadena, tupla, lista) o colección (conjunto, diccionario, conjunto congelado) o cualquier otro iterador.
  • reverse (Opcional) : si True, la lista ordenada se invierte (o se ordena en orden descendente). Predeterminado Falsesi no se proporciona.
  • clave (Opcional) : una función que sirve como clave para la comparación de clasificación. Por defecto es None.

Ejemplo 1: ordenar cadena, lista y tupla

 # vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))

Salida

 ('a', 'e', ​​'i', 'o', 'u') ('P', 'h', 'n', 'o', 't', 'y') ('a' , 'e', ​​'i', 'o', 'u')

Tenga en cuenta que en todos los casos se devuelve una lista ordenada.

Nota: Una lista también tiene el método sort () que funciona de la misma manera que sorted(). La única diferencia es que el sort()método no devuelve ningún valor y cambia la lista original.

Ejemplo 2: ordenar en orden descendente

La sorted()función acepta un reverseparámetro como argumento opcional.

La configuración reverse = Trueordena los iterables en orden descendente.

 # set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))

Salida

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o' , 'i', 'e', ​​'a')

Parámetro clave en la función sorted () de Python

Si desea su propia implementación para ordenar, sorted()también acepta una keyfunción como parámetro opcional.

Según el valor devuelto de la función clave, puede ordenar el iterable dado.

 ordenado (iterable, clave = len)

Aquí, len()está la función incorporada de Python para contar la longitud de un objeto.

La lista se ordena según la longitud del elemento, desde el recuento más bajo hasta el más alto.

Ejemplo 3: ordenar la lista usando sorted () que tiene una función clave

 # take the second element for sort def take_second(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key sorted_list = sorted(random, key=take_second) # print list print('Sorted list:', sorted_list)

Salida

 Lista ordenada: ((4, 1), (2, 2), (1, 3), (3, 4))

Ejemplo 4: clasificación con varias claves

Supongamos que tenemos la siguiente lista:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )

Queremos ordenar la lista de tal manera que el estudiante con las calificaciones más altas esté al principio. En caso de que los estudiantes obtengan calificaciones iguales, deben clasificarse para que el participante más joven sea lo primero.

Podemos lograr este tipo de ordenación con múltiples claves devolviendo tupla en lugar de un número.

Se pueden comparar dos tuplas comparando sus elementos empezando por el primero. Si hay un empate (los elementos son iguales), se compara el segundo elemento, y así sucesivamente.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Usemos esta lógica para construir nuestra lógica de clasificación.

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)

Salida

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Dado que la función lógica de clasificación es pequeña y cabe en una línea, la lambdafunción se usa dentro en keylugar de pasar un nombre de función separado.

El programa anterior se puede escribir usando la lambdafunción de la siguiente manera:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)

Salida

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Para obtener más información sobre las funciones lambda, visite Python Lambda Functions.

Articulos interesantes...