La función filter() integrada de Python puede usarse para crear un nuevo iterador a partir de un iterable existente (como una lista o un diccionario) que filtrará de forma eficiente los elementos usando una función que proporcionamos. Un iterable es un objeto Python que puede “repetirse” es decir, devolverá elementos en una secuencia de forma que podamos usarla en un bucle for.

La sintaxis básica para la función filter() es:

filter(function, iterable)

Copy

Esto devolverá un objetivo de filtro, que es un iterable. Podemos usar una función como list() para hacer una lista de todos los elementos devueltos en un objeto de filtro.

La función filter() proporciona una forma de filtrar valores que a menudo pueden ser más eficientes que un list comprehension, especialmente cuando comenzamos a trabajar con conjuntos de datos más grandes. Por ejemplo, un list comprehension creará una nueva lista, que aumentará el tiempo de ejecución para ese procesamiento. Esto significa que una vez que nuestro list comprehension haya completado su expresión, tendremos dos listas en la memoria. Sin embargo, filter() creará un objeto simple que alberga una referencia a la lista original, la función proporcionada y un índice de dónde ir en la lista original, lo que ocupa menos memoria.

En este tutorial, revisaremos cuatro formas diferentes de usar filter(): con dos estructuras iterables diferentes, con una función lambda y sin función definida.

Usar filter() con una función

El primer argumento para filter() es una función, que usamos para decidir si incluir o filtrar cada elemento. La función se invoca una vez para cada elemento en el iterable pasado como segundo argumento y cada vez que devuelve False, se suelta el valor. Ya que este argumento es una función, podemos pasar una función normal o podemos usar las funciones lambda, sobre todo cuando la expresión es menos compleja.

A continuación, está la sintaxis de un lambda con filter():

filter(lambda item: item[] expression, iterable)

Copy

Con una lista, como la siguiente, podemos incorporar una función lambda con una expresión contra la cual queremos evaluar cada elemento de la lista:

creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie']

Copy

Para filtrar esta lista para encontrar los nombres de nuestras criaturas de acuario que comienzan con vocal, podemos ejecutar la siguiente función lambda:

print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names)))

#python #función

Cómo usar la función de filtro en Python
2.55 GEEK