Introducción a la ordenación en Python

En algún momento de una aplicación o programa, necesitamos clasificar los datos en algún orden, por ejemplo, clasificar a los empleados según su salario o según algún rango, ordenar la lista de productos según el precio del producto y todo eso. En ese caso, el desarrollador necesita implementar la clasificación en un programa, si el desarrollador está usando el lenguaje de programación python, entonces será muy fácil de implementar. Python proporciona funciones incorporadas para realizar una ordenación básica o personalizar características de ordenación a nivel granular. Hay 2 funciones incorporadas en python para ordenar.

Veamos cómo ordenar diferentes tipos de datos, ordenar los datos en orden personalizado.

  • Necesitamos realizar una clasificación en la colección de elementos o grupos de elementos para obtener una colección de elementos en algún orden de clasificación. Para la clasificación, la comparación debe realizarse entre cada elemento de la colección y la comparación solo es posible y solo si son del mismo tipo de datos, por lo que podemos realizar la clasificación en la colección si son los mismos elementos de tipo de datos, por ejemplo, entero a entero se puede comparar pero no es entero con una cadena.
  • El siguiente punto es crear la colección de elementos, en Python, tenemos estructuras de listas, tuplas, conjuntos y datos de diccionario que solían almacenar la colección de elementos. Por lo tanto, para realizar la ordenación es necesario tener una comprensión básica de las tesis. Usaremos Python 3, la sintaxis puede ser ligeramente diferente si está usando Python 2 y también la salida de ejemplo.

Función de clasificación en python

Hay dos funciones de clasificación incorporadas en Python.

  • ordenar()
  • ordenado ()

A continuación se mencionan dos funciones de clasificación:

1. sort ()

El método sort () clasifica los elementos de una lista de colección dada en un orden específico, ya sea ascendente o descendente.

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

list.sort(key = …, reverse = …)

  • clave : la función de especificación de teclas del parámetro que se utiliza para la comparación de clasificación.
  • Reverse : el parámetro reverse si es verdadero, la lista ordenada se invierte, lo que significa que está ordenada en orden descendente.

Para obtener la descripción de la función de clasificación, utilice el comando de ayuda que se proporciona a continuación.

>>> lis=(1, 4, 3, 2) >>> help( lis.sort )

Comencemos la función de clasificación con el ejemplo.

Ejemplo 1:

l = ( 20, 50, 10, 40, 60 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Salida:

Al igual que en el código anterior, se crea la lista sin ordenar (20, 50, 10, 40, 60) y luego se aplica la función sort (), que ordena la lista en orden ascendente y no devuelve nada.

A continuación, intentamos la función sort () en tipo de datos decimal o flotante.

Ejemplo # 2:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Salida:

A continuación, intentamos la función sort () en el tipo de datos char.

Ejemplo # 3:

l = ( 'b', 'd', 'a', 'n', 'g') print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Salida:

A continuación, intentamos la función sort () en el tipo de datos String.

Ejemplo # 4:

l = ( "banana", "apple", "orange", "mango" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Salida:

A continuación, intentamos la función sort () en diferentes elementos de tipos de datos.

Ejemplo # 5:

l = ( 89, 56.78, "apple" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Salida:

A continuación, intentamos la función sort () con argumentos inversos.

Ejemplo # 6:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("liist = ", l)
l.sort( reverse = True )
print("sorted liist = ", l)

Salida:

En el código anterior, se crea la lista sin ordenar (26.7, 34.23, 67.45, 89.34, 23.18) y luego se aplica la función sort () con reverse = True, el valor predeterminado de reverse es False, que clasifica la lista en orden inverso o orden descendiente.

A continuación, intentaremos la función sort () con argumentos clave:

El parámetro clave es el componente más importante de la función sort (). Para este argumento, se pasa una función, que se utilizará en cada elemento de la lista que se ordena para organizar en el orden resultante.

Comencemos el ejemplo, supongamos que tenemos una lista de cadenas y queremos ordenar una lista en función de la longitud de las cadenas en la lista en orden ascendente (de menor a mayor longitud). La función incorporada len () en python devuelve la longitud de la cadena, por lo que len () puede usarse para pasar el argumento clave.

Ejemplo # 7:

word = "Hello"
length = len(word)
print( "The length of word is ", length)
l = ( "aaa", "bbbbb", "cc", "ddd" ) print("liist = ", l)
print( "The length of list is ", len(l))
# length of the list is 4, because it contains 4 elements
# Now we sort the list based on the length of the list elements
l.sort( key = len )
print("Sorted liist = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort(key = len, reverse = True)
print("Sorted liist with reverse = ", l)

Salida:

El orden resultante de list.sort (key = len) es una lista de cadenas de clasificación en orden de menor a mayor. Mientras que list.sort (key = len, reverse = True) que da como resultado un orden de la lista es el más largo al más corto. La longitud de cada elemento en la lista está determinada por la función len ().

A continuación, intentamos la función sort () con la clave pasando el usuario define la función:

Ejemplo # 8:

l = ( 'banana', 'orange', 'apple' ) print("liist = ", l)
# function return second element
def sort_onSecondChar(word):
return word(1) l.sort( key = sort_onSecondChar )
print("Sorted liist based on second character = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort( key = sort_onSecondChar, reverse = True)
print("Sorted liist based on second character with reverse = ", l)

Salida:

El orden resultante de list.sort (key = sort_onSecondChar)) es una lista de cadenas de clasificación en orden ascendente según el segundo carácter. Mientras que un orden de lista resultante list.sort (key = sort_onSecondChar, reverse = True) desciende en función del segundo carácter. El usuario determina la clasificación de cada elemento en la lista para definir la función sort_onSecondChar ().

2. clasificado ()

La llamada a la función sorted () en la lista o colección, devuelve la nueva lista ordenada. La función sorted () no edita ni cambia la lista en la que se llama, pero devuelve la lista ordenada como resultado de ella.

La sintaxis de la función sorted ():

sorted(iterable, key, reverse)

  • iterable: lista, tupla, cadena, conjunto, conjunto congelado, diccionario de cualquier colección o iterable que necesite ordenar.
  • reverse-reverse especifica si la lista ordenada se revertirá o no (es decir, en orden descendente). Es
  • tecla: especifique la función como una tecla para comparar para la ordenación. Es opcional .

Para obtener la descripción de la función de clasificación, utilice el comando de ayuda que se proporciona a continuación.

Considere los ejemplos:

Ejemplo # 9:

l = ( 2, 1, 3, 6, 5, 4 ) print("list = ", l)
sorted(l)
print( "The sorted list = ", l)

Salida:

Tenga en cuenta que también podemos usar la función list.sort () para realizar lo mismo, pero las diferencias son, la función sort () modifica la lista en sí misma y devuelve None como resultado de salida. Otra diferencia de la función list.sort () es que puede aplicarse a la única lista, mientras que sorted () puede aplicarse a cualquier colección o iterable.

Veamos el ejemplo donde creamos la tupla (sabemos que para crear una tupla use llaves (y) y características de tupla si está ordenada, almacena duplicados, no se puede aplicar al índice y es inmutable) y aplica la función sorted () .

Ejemplo # 10:

t = ( 60, 20, 40, 10 )
print("Tuple = ", t)
re=sorted(t)
#print return of sorted()
print( "The return sorted list of sorted() = ", re)
#we check what is there in t
print( "After sorted tuple = ", t)

Salida:

Si la función sort () se aplica a la tupla, da "AttributeError: el objeto 'tuple' no tiene error de atributo 'sort'".

Por lo tanto, la función sort () no se puede aplicar a la tupla, incluso no se puede aplicar a otras colecciones excepto la lista.

A continuación, veremos algunos ejemplos con diferentes tipos de datos:

Ejemplo # 11:

l = ( 2.89, 56.34, 45.23 ) print("List of floating numbers = ", l)
re=sorted(l)
#print return of sorted()
print( "The return list of sorted() floating numbers = ", re)
lc = ( 'l', 'e', 'g', 'a', 'd' ) print("List of characters = ", lc)
re=sorted(lc)
#print return of sorted()
print( "The return list of sorted() characters = ", re)

Salida:

A continuación, intentaremos la función sorted () con parámetro inverso:

Consideremos el ejemplo:

Ejemplo # 12:

l = ( 2, 1, 3, 6, 5, 4 ) print("List = ", l)
re=sorted(l, reverse=True )
#print return of sorted()
print( "The return list of sorted() with reverse = ", re)

Salida:

A continuación, veremos la función sorted () con el parámetro clave, en el siguiente código que se pasa pasando la función len () al parámetro clave, por lo que la función sorted () devolverá una lista en orden de clasificación según la longitud de los elementos.

Ejemplo # 13:

l = ('aaaa', 'bb', 'ccc', 'ddddd') print("List = ", l)
re=sorted(l, key = len )
#print return of sorted()
print( "The return list of sorted() with key = ", re)

Salida:

A continuación, veremos una función sorted () con el parámetro clave a medida que el usuario define la función, en el siguiente código ajustado pasando la función returnSecond () al parámetro clave. La función returnSecond () es el usuario define la función, que solo devuelve el segundo elemento, por lo que la función sorted () devuelve una nueva lista ordenada en orden de clasificación basada en el segundo elemento de la tupla. Si queremos ordenar en la base del primer elemento, edite la función returnSecond () para devolver el primer elemento como (L (0)).

Ejemplo # 14:

# return second element for sort
def returnSecond( L ):
return L(1) # list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = returnSecond (returnSecond function which return second element so sort done based on seceond elemet)
sortedList = sorted(list, key = returnSecond)
# print list
print('The sorted list:', sortedList)

Salida:

Alteramos el código anterior usando la función lambda (la función lambda es anónima, simula lo mismo que las funciones en línea de C y C ++).

Ejemplo # 15:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(1) (lambda function which return second element so sort done based on second element)
sortedList = sorted( list, key = lambda x : x(1))
print( "The sorted list = ", sortedList)

Salida:

El código anterior altera la clasificación según el primer elemento al alterar la función lambda.

Ejemplo # 16:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(0) (lambda function which return first element so sort done based on first element)
sortedList = sorted( list, key = lambda x : x(0))
# print list
print('The sorted list:', sortedList)

Salida:

Ahora creemos una lista de detalles de estudiantes y para almacenar los detalles de cada estudiante la tupla que usaremos. Una tupla contiene un registro del alumno, el primer elemento de la tupla es el nombre del alumno, el segundo elemento es el número de registro del alumno y el tercer elemento son las calificaciones totales del alumno. A continuación, queremos almacenar los detalles del estudiante en orden de sus marcas, así que comencemos la codificación.

Ejemplo # 17:

students = ( ('john', 1, 60), ('jane', 2, 70), ('dave', '3', 70.5), ('joseph', 1, 92) ) print( "The Student List = ", students)
# sorting the student list of tuple based on the third element that is marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The sorted list = ", sortedlist)
#reverese
sortedlist = sorted(students, key=lambda stud : stud(2), reverse=True)
print("The sorted list with reverse=True ", sortedlist)
# Display the student name and marks in sorting order of their marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The student names and marks in order of their marks")
print("name", "marks")
for x in sortedlist:
print(x(0), x(2))

Salida:

Conclusión

Las funciones sort () y sorted () se usan para ordenar la colección. La lista.sort () edita en la lista misma, mientras que la ordenada (lista) no edita en la lista devuelve la nueva lista ordenada. La función sort () se aplica solo a la lista, mientras que la función sorted () se puede aplicar a todas las colecciones como list, tuple, dictionary y all.

Artículos recomendados

Esta es una guía para ordenar en Python. Aquí discutimos las dos funciones de clasificación incorporadas en python con el programa y la salida. También puede consultar el siguiente artículo para obtener más información:

  1. Variables de Python
  2. Destructor en Python
  3. Conexión de base de datos de Python
  4. Editores de Python
  5. Tipos de datos PL / SQL
  6. Diferentes tipos de datos SQL con ejemplos