Фильтрация группы элементов
Функция compress()
оставляет из итерируемых данных только те, что соответствуют позициям булевых селекторов:
>>> numbers = [0, 1, 2, 3, 2, 1, 0]
>>> selectors = [True, True, False, True]
>>> list(itertools.compress(numbers, selectors))
[0, 1, 3]
Метод itertools.filterfalse()
дополняет обычный фильтр filter()
:
def filter_func(n):
if n < 2:
return True
return False
print(list(filter(filter_func, numbers)))
print(list(itertools.filterfalse(filter_func, numbers)))
[0, 1, 1, 0]
[2, 3, 2]