filter()

Функция filter() пропускает через себя элементы итерируемого объекта, оставляя только те, для которых функция-предикат возвращает истинное значение. Возвращает ленивый итератор, который можно перебрать в цикле или превратить в список.

Сигнатура

filter(function, iterable)

Параметры:

  • function — функция одного аргумента, возвращающая True/False. Если передать None, отбираются элементы, истинные сами по себе.

  • iterable — любой итерируемый объект (список, кортеж, генератор и т. д.).

Возвращает: объект-итератор filter с прошедшими проверку элементами.

Примеры

Отбор чётных чисел:

nums = [1, 2, 3, 4, 5, 6]
evens = list(filter(lambda n: n % 2 == 0, nums))
print(evens)
[2, 4, 6]

Удаление пустых строк через None:

words = ["hello", "", "world", None, "python", 0]
clean = list(filter(None, words))
print(clean)
['hello', 'world', 'python']

Фильтр по длине строки:

names = ["Bek", "Aigerim", "Eli", "Aliya"]
long_names = list(filter(lambda s: len(s) >= 5, names))
print(long_names)
['Aigerim', 'Aliya']

Совместно с обычной функцией:

def is_positive(x):
    return x > 0

values = [-3, 0, 5, -1, 8]
print(list(filter(is_positive, values)))
[5, 8]

Фильтрация словарей по полю:

users = [
    {"name": "Bek", "age": 17},
    {"name": "Dauren", "age": 25},
    {"name": "Aida", "age": 14},
]
adults = list(filter(lambda u: u["age"] >= 18, users))
print(adults)
[{'name': 'Dauren', 'age': 25}]

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.