import itertools itertools.filterfalse(predicate, iterable)
predicate
- функция, возвращающая значение bool
,iterable
- итерируемая последовательность.Функция filterfalse()
модуля itertools
создает итератор, который удаляет элементы из последовательности iterable
до тех пор, пока функция predicate
равна False
или 0. Возвращается итератор с отобранными элементами.
Если predicate=None
, функция вернет элементы, которые являются ложными.
Аргумент predicate
это функция, принимающая один элемент последовательности и возвращающая bool
значение.
Функция itertools.filterfalse()
примерно эквивалентна следующему коду:
def filterfalse(predicate, iterable): # filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8 if predicate is None: predicate = bool for x in iterable: if not predicate(x): yield x
>>> from itertools import filterfalse >>> x = list(range(6)) >>> y = sorted(x, reverse = True) >>> z = x + y >>> z # [0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0] # например удалим значения списка x<3 >>> rez = filterfalse(lambda x: x<3, z) >>> list(rez) [3, 4, 5, 5, 4, 3] # теперь наоборот. >>> rez = filterfalse(lambda x: x>3, z) >>> list(rez) [0, 1, 2, 3, 3, 2, 1, 0] # отобрать четные значения >>> rez = filterfalse(lambda x: x%2, range(10)) # [0, 2, 4, 6, 8] # отобрать нечетные значения >>> rez = filterfalse(lambda x: not x%2, range(10)) >>> list(rez) [1, 3, 5, 7, 9]