Junior
172
Чӣ гуна функсияи filter() дар Python кор мекунад?
Ҷавоб аз AI
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] |