Техники фильтрации
Фильтрация с использованием включений списков
Включения списков (list comprehension) предоставляют лаконичный способ фильтрации списков на основе булевых условий:
## 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]
Функция filter()
Функция filter() представляет еще один мощный метод фильтрации:
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]
Техники булевой фильтрации
| Техника |
Описание |
Пример |
| Включения списков (List Comprehension) |
Фильтрация встроенная в строку |
[x for x in list if condition] |
Функция filter() |
Функциональная фильтрация |
filter(function, iterable) |
| Условные выражения |
Фильтрация, похожая на тернарную операцию |
value if condition else alternative |
Продвинутая фильтрация с несколькими условиями
## 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)
Визуализация процесса фильтрации
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
Булево индексирование с использованием 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]
Вопросы производительности
| Метод фильтрации |
Временная сложность |
Читаемость |
| Включения списков (List Comprehension) |
O(n) |
Высокая |
filter() |
O(n) |
Средняя |
| Булево индексирование в NumPy |
O(n) |
Высокая |
Основные стратегии фильтрации
- Используйте включения списков для простой и читаемой фильтрации
- Пользуйтесь функцией
filter() для функционального подхода к программированию
- Рассмотрите возможность использования NumPy для фильтрации числовых данных
LabEx рекомендует овладеть этими техниками, чтобы писать эффективный и чистый код фильтрации на Python.