все Python 3Функциифункция
filter()
функциональное
Отбирает элементы, для которых функция возвращает True. Возвращает итератор.
Синтаксис
filter(func, iterable)
Результат — ленивый итератор: он считается по мере обхода и исчерпывается после первого прохода, так что повторный list() по нему вернёт пустоту. Особый случай — filter(None, iterable): без функции отсеиваются все ложные по истинности элементы (0, '', None, пустые контейнеры).
Примеры
nums = [1, -2, 3, -4, 5]
pos = list(filter(lambda x: x > 0, nums))
print(pos) # → [1, 3, 5]
evens = list(filter(lambda x: x % 2 == 0, range(10)))
print(evens) # → [0, 2, 4, 6, 8]
words = ['', 'hello', '', 'world']
non_empty = list(filter(None, words))
print(non_empty) # → ['hello', 'world']
# filter с функцией
def is_odd(n): return n % 2 != 0
odds = list(filter(is_odd, range(10)))
print(odds) # → [1, 3, 5, 7, 9]
# filter ленивый
f = filter(lambda x: x > 2, [1,2,3,4])
print(next(f)) # → 3
# Отбор непустых словарей
data = [{'a':1}, {}, {'b':2}]
non_empty_d = list(filter(None, data))
print(non_empty_d) # → [{'a':1},{'b':2}]
# filter + map
result = list(map(lambda x: x**2, filter(lambda x: x%2==0, range(6))))
print(result) # → [0, 4, 16]
print(list(filter(str.isdigit, "a1b2c3"))) # → ['1', '2', '3']
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности