Python 3.0+itertoolsфункция
itertools.filterfalse
itertools
Отдаёт элементы, для которых предикат ложен (обратное filter()).
Синтаксис
itertools.filterfalse(predicate, iterable)
Как и у filter, значение predicate=None означает «проверять сам элемент на истинность», так что filterfalse(None, it) отдаёт именно ложные элементы — нули, пустые строки, None. В паре с filter на одном источнике (через tee) это стандартный способ разбить данные на две группы по условию.
Примеры
import itertools
print(list(itertools.filterfalse(lambda x: x % 2, [1, 2, 3, 4]))) # → [2, 4]
print(list(itertools.filterfalse(None, [0, 1, '', 'a', [], [2]]))) # → [0, '', []]
print(list(itertools.filterfalse(lambda w: len(w) > 3, ['кот', 'дом', 'программа', 'и']))) # → ['кот', 'дом', 'и']
print(list(itertools.filterfalse(lambda x: True, [1, 2, 3]))) # → []
print(list(filter(lambda x: x % 2, [1, 2, 3, 4]))) # → [1, 3]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности