Одна особенность 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 значения.
Post #17
218
- 👍 3