Hay tres funciones básicas en Python, a saber, filter(), map() y reduce(). Nos proporcionan funciones de filtrado, mapeo y agregación respectivamente. En la sección anterior, simplemente usamos la función filter() combinada con una función anónima. A continuación presentaremos su uso en detalle.
Al filtrar y filtrar datos, generalmente usamos la función filter () para ayudarnos a resolver el problema rápidamente. Su formato de sintaxis es:
filtro (función, objeto iterable)
En la función de filtro, coloque nuestro método de filtrado o filtrado, es decir, el nombre de la función , al frente y almacene el objeto iterable en la parte posterior. Veamos el siguiente ejemplo:
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))#Solo necesito algunos nombres de funciones, no se necesitan parámetros
Resultado de salida:
<filteroobjectat0x034C2DD8>
Con respecto a este ejemplo, primero definimos una función test(), que devuelve su valor si x es un número par, y luego usamos la función test() para filtrar la lista my_list a través de la función filter(), pero el resultado de salida es < objeto de filtro en 0x034C2DD8>, aquí debemos tener en cuenta que el valor de retorno de la función filter() es un objeto iterable y debemos acceder a los valores de forma iterativa, o usar la función list() para forzar la conversión de tipos.
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))foriinfilter(test,my_list):print('después de la iteración Datos: ',i)print('Usar el método list():',lista(filtro(prueba,mi_lista)))
La salida es:
Datos en la iteración: 2 Datos en la iteración: 4 Datos en la iteración: 6 Usando el método list(): [2, 4, 6]
Hemos usado la función map() muchas veces antes. Por ejemplo, cuando ingresamos varios valores, usaremos la función map() cuando necesitemos ingresar cuatro valores:
a,b,c,d=mapa(int,entrada().split())imprimir(a,b,c,d)
El formato de sintaxis de la función map() es:
mapa (función, objeto iterable)
Cuando usamos la función map(), la usamos principalmente para el procesamiento de datos. Los datos en el objeto iterable se almacenan después de ser procesados por la función. Continuamos usando la función list() para el almacenamiento.
Primero veamos el ejemplo anterior de ingresar cuatro valores. Int es una función, y el valor ingresado por input().splite es un objeto iterable, que se almacena en el objeto de mapa después de ser procesado por la función int.
Podemos usar la función map() para procesar todos los datos en una secuencia a través de una función, vea el siguiente ejemplo:
Almacenamos las letras en una lista, y si existe una letra minúscula, la ponemos en mayúscula.
El código es el siguiente:
deftest(x):ifx.islower():returnx.upper()else:returnxmy_list=['d','o','t','C','p','P']print(list(mapa) (prueba, mi_lista)))
La salida es:
['D','O','T','C','P','P']
La función test() primero juzgará x. Si es una letra minúscula, devolverá su letra mayúscula. Si no es una letra minúscula, devolverá su valor.
La función reduce() se utiliza para agregar objetos iterables mediante métodos funcionales.
El formato de sintaxis es:
reducir(función, objeto iterable[, valor inicial])
Por ejemplo, sabemos que una lista es [1,2,3,4] y necesitamos encontrar la suma de todos los elementos de la lista multiplicados en secuencia. Podemos usar la función reducir().
La función fromfunctoolsimportreduce#reduce se define en el módulo functools y debe introducirse deftest(x,y):returnx*ymy_list=[1,2,3,4]print(reduce(test,my_list))
La salida es:
La primera línea de código presenta este método y el módulo se explicará más adelante. La función test() devuelve dos datos para multiplicar y luego la lista my_list se procesa a través de la función reduce().
El proceso de procesamiento es el siguiente:
Primero ejecute el primer paso, luego obtenga un resultado y multiplíquelo por el siguiente, y luego vaya al último dígito.
Las dos primeras de estas tres funciones se usan comúnmente. Dominar estas tres funciones puede ayudarnos a resolver una serie de problemas complejos. En la siguiente sección, aprenderemos sobre las funciones recursivas.