Cómo utilizar la función filter() en Python
Aprenda a utilizar la función filter() de Python para extraer elementos de colecciones. Compare el filtro con listas por comprensión y devoluciones de llamadas lambda.
Descripción general
El filtrado de datos es una tarea central en la programación de aplicaciones. A menudo necesitarás buscar en una lista y extraer elementos que cumplan criterios específicos, como extraer usuarios activos de una base de datos de perfiles o filtrar números negativos de los registros de sensores. Python proporciona una herramienta funcional incorporada llamada `filtro()` para este propósito.
La función `filtro(función, iterable)` toma una función de filtrado y un iterable como argumentos. El argumento de la función debe devolver un valor booleano ("Verdadero" o "Falso") para cada elemento. La función `filter()` evalúa cada elemento, reteniendo solo aquellos que se evalúan como `True` y devuelve un objeto iterador (un objeto `filter`) que contiene los resultados.
Al igual que `map()`, `filter()` evalúa elementos de forma perezosa. Si necesita una lista estándar de inmediato, emita la salida usando el constructor `list()`: `list(filter(func, data))`. Si pasa `Ninguno` como parámetro de función (por ejemplo, `filtro(Ninguno, datos)`), Python filtrará automáticamente todos los elementos que sean falsos, lo cual es una excelente abreviatura para borrar valores vacíos.
Código y salida de ejecución
Este script demuestra cómo filtrar matrices numéricas, extraer elementos de diccionario y descartar cadenas vacías falsas con filter().
numbers = [-5, -2, 0, 3, 8, -1]
# 1. Filter positive numbers using a lambda function
positives = list(filter(lambda x: x > 0, numbers))
print("Positives only:", positives)
# 2. Filter list of strings by character length
words = ["cat", "elephant", "dog", "giraffe"]
long_words = list(filter(lambda w: len(w) > 4, words))
print("Words longer than 4 chars:", long_words)
# 3. Shorthand: Remove all falsy values from a list by passing None
mixed_data = ["hello", "", "world", None, False, "active"]
clean_data = list(filter(None, mixed_data))
print("Falsy values removed:", clean_data)Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']Implementación paso a paso
- Defina una función que acepte un elemento y devuelva un valor booleano que represente los criterios del filtro.
- Llame al filtro (función, iterable) para crear un iterador diferido de coincidencias.
- Transmita el objeto de filtro resultante a una lista usando list(filter(...)) si necesita manipular los registros.
- Pase Ninguno como argumento de la función para filtrar todos los valores falsos (como Ninguno, 0 y cadenas vacías).
Preguntas frecuentes
¿Qué sucede si la función pasada a filter() no devuelve un valor booleano?
Python evalúa la veracidad del valor devuelto. Si el valor se evalúa como Verdadero en un contexto booleano, el elemento se conserva.
¿Debo usar filter() o una lista por comprensión?
A menudo se prefiere una lista de comprensión con una condición if (por ejemplo, [x para x en la lista si condición]) para facilitar la lectura, pero filter() es limpio y tiene un alto rendimiento, especialmente cuando se utilizan funciones integradas existentes.
Temas relacionados
Aprenda a utilizar funciones lambda en Python. Domine funciones anónimas, devoluciones de llamadas en línea y clasificación de datos de listas con claves lambda.
Cómo utilizar la comprensión de listas en PythonAprenda a utilizar listas por comprensión en Python. Escriba bucles concisos, aplique filtros condicionales y cree matrices con una sintaxis visual limpia.
Cómo utilizar la función map() en PythonAprenda a utilizar la función map() de Python. Domine la aplicación de funciones a iterables sin escribir bucles y compare mapas con listas por comprensión.
Recursos recomendados de Python
Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.
Funciones de Python
Domina las funciones de Python. Aprenda a escribir código reutilizable usando def, definir argumentos, valores de retorno y comprender el alcance a nivel local y global.
Hoja de referencia de funciones del módulo matemático de Python
Guía de referencia rápida para la biblioteca estándar matemática de Python. Aprenda a utilizar funciones trigonométricas, logarítmicas, de redondeo y aritméticas.
Python vs JavaScript: ¿Qué lenguaje de programación es mejor?
Una comparación completa entre Python y JavaScript. Explore las diferencias de sintaxis, el rendimiento, los casos de uso (backend frente a frontend) y ejemplos de codificación.