Сообщить об ошибке.

Функция filterfalse() модуля itertools в Python

Удалить элементы списка по условию

Синтаксис:

import itertools

itertools.filterfalse(predicate, 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]