Одна особенность filter
Синтаксис встроенной функции
Эта функция фильтрует значения переданной последовательности с помощью функции
Например, таким способом можно отфильтровать только строки, состоящие из чисел:
А еще (внезапно) вместо функции можно использовать
Синтаксис встроенной функции
filter
такой: filter(function, iterable)
. Эта функция фильтрует значения переданной последовательности с помощью функции
function
. Если function
получает очередной элемент последовательности и возвращает True
, то элемент попадает в результат работы filter
, иначе нет. Например, таким способом можно отфильтровать только строки, состоящие из чисел:
Или только четные значения:
>>> strings = ['two', 'list', '', 'dict', '100', '1', '50']
>>> list(filter(str.isdigit, strings))
['100', '1', '50']
Часто в качестве фильтров используют лямбда-функции или член-функции классов.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(filter(lambda x: x % 2 == 0, numbers))
А еще (внезапно) вместо функции можно использовать
None
: И тогда
>>> random = [1, 'a', 0, False, True, '0', '']
>>> list(filter(None, random))
[1, 'a', True, '0']
filter
вернет только truthy значения. 🐠