Techniques de filtrage
Filtrage avec les compréhensions de liste
Les compréhensions de liste offrent un moyen concis de filtrer des listes en fonction de conditions booléennes :
## Basic filtering
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]
Fonction filter()
La fonction filter() propose une autre méthode de filtrage puissante :
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]
Techniques de filtrage booléen
| Technique |
Description |
Exemple |
| Compréhension de liste |
Filtrage en ligne |
[x for x in list if condition] |
Fonction filter() |
Filtrage fonctionnel |
filter(function, iterable) |
| Expressions conditionnelles |
Filtrage de type ternaire |
value if condition else alternative |
Filtrage avancé avec plusieurs conditions
## Complex filtering
data = [
{'name': 'Alice', 'age': 25, 'active': True},
{'name': 'Bob', 'age': 30, 'active': False},
{'name': 'Charlie', 'age': 35, 'active': True}
]
## Filter active users over 30
filtered_users = [
user for user in data
if user['active'] and user['age'] > 30
]
print(filtered_users)
Visualisation du flux de filtrage
graph TD
A[Input Data] --> B{Apply Filter Condition}
B -->|Passes Condition| C[Keep Item]
B -->|Fails Condition| D[Discard Item]
C --> E[Filtered Result]
D --> E
Indexation booléenne avec NumPy
import numpy as np
## NumPy boolean filtering
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]
| Méthode de filtrage |
Complexité temporelle |
Lisibilité |
| Compréhension de liste |
O(n) |
Élevée |
filter() |
O(n) |
Moyenne |
| Indexation booléenne NumPy |
O(n) |
Élevée |
Stratégies clés de filtrage
- Utilisez les compréhensions de liste pour des filtrages simples et lisibles
- Exploitez la fonction
filter() pour les approches de programmation fonctionnelle
- Pensez à NumPy pour le filtrage de données numériques
LabEx recommande de maîtriser ces techniques pour écrire un code de filtrage efficace et propre en Python.