Назад к вопросам
Junior
73
questionbank
Как работает функция filter() в Python?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Функция filter(function, iterable) создает итератор из тех элементов iterable, для которых function(item) возвращает истинное (true) значение.
Принцип работы:
filterпринимает два аргумента: функцию (function) и итерируемый объект (iterable).- Она обходит каждый элемент
itemвiterable. - Для каждого
itemвызывается функцияfunction(item). - Если результат вызова
function(item)является истинным (любое значение, которое оценивается какTrueв булевом контексте),itemвключается в результирующий итератор. - Если результат ложный (
False,None, 0, пустые коллекции),itemпропускается. filterвозвращает итератор, который лениво генерирует отфильтрованные элементы.
Пример использования:
# Фильтрация четных чисел
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers_iterator = filter(lambda x: x % 2 == 0, numbers)
# Преобразование итератора в список для отображения
print(list(even_numbers_iterator))
# Фильтрация непустых строк
strings = ["hello", "", "world", None, "python"]
non_empty_strings_iterator = filter(None, strings) # None как функция эквивалентен identity (lambda x: x), проверяет на истинность
print(list(non_empty_strings_iterator))
Отличие от генераторов списков:
filterвозвращает итератор (ленивое выполнение), что эффективно для больших данных.- Генератор списка создает новый список сразу (требует больше памяти).
| Признак | filter() | Генератор списка |
|---|---|---|
| Возвращаемый тип | Итератор | Список |
| Вычисление | Ленивое (по требованию) | Жадное (сразу при создании) |
| Память | Эффективно для больших данных | Может потреблять много памяти |
| Синтаксис | filter(func, iterable) |
[item for item in iterable if condition] |