Funciones de orden superior
En Python las funciones de orden superior son aquellas funciones que admiten o devuelven otras funciones. Tomemos por ejemplo el caso que necesitaramos crear una función que devuelva los números pares de una lista de números determinada. Para ello nos podemos valer de la función de orden superior FILTER().
Funcion FILTER()
En principio podemos definir una función que evalúe número a número si es par o no, pero habría que hacer otro paso para devolver solamente los que cumplen el criterio deseado, sin embargo si esta función creada se pasa como parámetro a otra función que haga ese trabajo se podría conseguir el mismo resultado con menos código y de manera mas rápida. Veamos el siguiente ejemplo:
Resultado:
[12, 34, 36, 2, 6]
El código anterior realiza las siguientes tareas: luego de definir una función llamada PAR() que devuelve TRUE en el caso que el módulo de la división de un número entere 2 sea 0, (en cuyo caso dicho número sería par), se procede a crear una lista con varios números entre ellos varios pares e impares, luego se le pasa como primer argumento la función creada y como segundo argumento la lista de números a la función de orden superior FILTER(), la cual va a filtrar por el criterio estabecido en la función PAR() y en donde sea devuelto el valor booleano TRUE, cada uno de los elementos de la lista enviados en el segundo argumento, devolviendo una lista que contenga solo aquellos elementos de la lista original que hayan devuelto el valor booleano TRUE en la función PAR().
El código anterior se puede simplificar usando funciones lambda, veamos el siguiente ejemplo:
Resultado:
[12, 34, 36, 2, 6]
Como podemos comprobar el resultado es el mismo pero usando menos líneas de código gracias al uso de la función anónima lambda. Y con el uso de la función de orden superior FILTER() se ha simplificado mucho mas el proceso.
Esta misma operación se puede realizar utilizando objetos y la función de orden superior FILTER(). Veamos el siguiente ejemplo:
Resultado:
El empleado Luisa con el cargo Analista tiene un salario de $ 22000
El empleado Marco con el cargo Director tiene un salario de $ 28000
Como podemos comprobar la función filter ha seleccionado solamente a los empleados que tienen un salario mayor a 15000. Mostrando a cadena definida del objeto con el formato previamente establecido.
Función MAP()
La función MAP() es otra función de orden superior que permite aplicar una función a cada elemento de una lista. La sintaxis de la función es como sigue:
MAP(<función a ejecutar en el iterable>,<objeto iterable>).
Supongamos que deseamos aplicar una función a cada elemento de una lista de personas, la función debe asignarle un aumento del 5% al salario del empleado. Veamos el siguiente ejemplo:
Resultado:
********************** Sueldos antes del aumento **********************
El empleado César ostenta el cargo de Programador con un sueldo de $15000
El empleado Luisa ostenta el cargo de Analista con un sueldo de $22000
El empleado Maria ostenta el cargo de Recepcionista con un sueldo de $9000
El empleado Marco ostenta el cargo de Director con un sueldo de $28000
********************** Sueldos despues del aumento del 10% **********************
El empleado César ostenta el cargo de Programador con un sueldo de $16500 ción
El empleado Luisa ostenta el cargo de Analista con un sueldo de $24200
El empleado Maria ostenta el cargo de Recepcionista con un sueldo de $9900
El empleado Marco ostenta el cargo de Director con un sueldo de $30800
La función MAP() opera de tal forma que admite como primer argumento una función la cual se va a aplicar al segundo argumento la cual es una lista de elementos, en este caso la función que hace el trabajo es calculo_aumento(), la cual incrementa el contenido de la propiedad sueldo del objeto empleado en un 10% y luego devuelve dicho objeto en la instrucción return. Posteriormente la función de orden superior MAP() devuelve el resultado de la aplicación de esta función en los elementos de la lista llamada lista_empleados en otra lista llamada lista_aumentos. Al imprimir por pantalla los elementos de la lista_aumentos podemos comprobar que en dicha lista los objetos empleado ahora tienen un incremento del 10% del sueldo.
Comentarios
Publicar un comentario