Técnicas de filtrado
Filtrado con comprensión de listas
La comprensión de listas proporciona una forma concisa de filtrar listas en función de condiciones booleanas:
## Filtrado básico
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers) ## [2, 4, 6, 8, 10]
Función filter
La función filter()
ofrece otro método de filtrado poderoso:
def is_positive(x):
return x > 0
numbers = [-1, 0, 1, 2, -3, 4]
positive_numbers = list(filter(is_positive, numbers))
print(positive_numbers) ## [1, 2, 4]
Técnicas de filtrado booleano
Técnica |
Descripción |
Ejemplo |
Comprensión de listas |
Filtrado en línea |
[x for x in list if condition] |
Función filter() |
Filtrado funcional |
filter(function, iterable) |
Expresiones condicionales |
Filtrado similar al ternario |
value if condition else alternative |
Filtrado avanzado con múltiples condiciones
## Filtrado complejo
data = [
{'name': 'Alice', 'age': 25, 'active': True},
{'name': 'Bob', 'age': 30, 'active': False},
{'name': 'Charlie', 'age': 35, 'active': True}
]
## Filtrar usuarios activos mayores de 30 años
filtered_users = [
user for user in data
if user['active'] and user['age'] > 30
]
print(filtered_users)
Visualización del flujo de filtrado
graph TD
A[Datos de entrada] --> B{Aplicar condición de filtrado}
B -->|Cumple la condición| C[Mantener elemento]
B -->|No cumple la condición| D[Descartar elemento]
C --> E[Resultado filtrado]
D --> E
Indexación booleana con NumPy
import numpy as np
## Filtrado booleano con NumPy
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
filtered_arr = arr[arr % 2 == 0]
print(filtered_arr) ## [2 4 6 8 10]
Consideraciones de rendimiento
Método de filtrado |
Complejidad temporal |
Legibilidad |
Comprensión de listas |
O(n) |
Alta |
filter() |
O(n) |
Media |
Indexación booleana de NumPy |
O(n) |
Alta |
Estrategias clave de filtrado
- Utilice la comprensión de listas para filtrados simples y legibles.
- Aproveche la función
filter()
para enfoques de programación funcional.
- Considere NumPy para el filtrado de datos numéricos.
LabEx recomienda dominar estas técnicas para escribir código de filtrado eficiente y limpio en Python.