Функция filter
в Python используется для создания итератора, который фильтрует элементы из переданного итерируемого объекта, возвращая только те, для которых функция function
возвращает True
.
Содержание
Синтаксис
filter(function, iterable)
Параметры
function
: Функция, применяемая к каждому элементу итерируемого объекта. Должна возвращатьTrue
илиFalse
. Если передано значениеNone
, используется встроенная функцияidentity
, которая просто возвращает значение элемента.iterable
: Итерируемый объект (список, кортеж, строка и т.д.), элементы которого будут фильтроваться.
Возвращаемое значение
Функция возвращает итератор, содержащий те элементы из iterable
, для которых function
вернула True
.
Примеры использования
Пример 1: Фильтрация четных чисел
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # Вывод: [2, 4, 6, 8, 10]
Пример 2: Фильтрация строк по длине
words = ['apple', 'banana', 'cherry', 'date']
long_words = filter(lambda word: len(word) > 5, words)
print(list(long_words)) # Вывод: ['banana', 'cherry']
Пример 3: Фильтрация значений с использованием функции
def is_positive(number):
return number > 0
numbers = [-10, -5, 0, 5, 10]
positive_numbers = filter(is_positive, numbers)
print(list(positive_numbers)) # Вывод: [5, 10]
Пример 4: Фильтрация значений None
values = [0, 1, None, 2, '', 3, False, 4]
non_none_values = filter(None, values)
print(list(non_none_values)) # Вывод: [1, 2, 3, 4]
Пример 5: Фильтрация пользователей по возрасту из словаря
users = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 17},
{'name': 'Charlie', 'age': 25},
{'name': 'David', 'age': 16}
]
adults = filter(lambda user: user['age'] >= 18, users)
print(list(adults))
# Вывод: [{'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 25}]
Важные замечания
- Ленивое выполнение:
filter
возвращает итератор, а не список. Это означает, что фильтрация выполняется лениво: элементы обрабатываются по мере итерирования. - Совместимость с функциями высшего порядка:
filter
хорошо работает с лямбда-функциями и другими функциями высшего порядка, такими какmap
иreduce
.