Назад к вопросам
Junior
73
questionbank

Как работает функция filter() в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Функция filter(function, iterable) создает итератор из тех элементов iterable, для которых function(item) возвращает истинное (true) значение.

Принцип работы:

  1. filter принимает два аргумента: функцию (function) и итерируемый объект (iterable).
  2. Она обходит каждый элемент item в iterable.
  3. Для каждого item вызывается функция function(item).
  4. Если результат вызова function(item) является истинным (любое значение, которое оценивается как True в булевом контексте), item включается в результирующий итератор.
  5. Если результат ложный (False, None, 0, пустые коллекции), item пропускается.
  6. 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]