На этом шаге мы рассмотрим различные способы фильтрации.
Для фильтрации элементов последовательности предназначены следующие функции:
>>> import itertools >>> def func(x) : return x > 3 >>> list (itertools.filterfalse (func, [4, 5, 6, 0, 1, 2, 3])) [0, 2, 3] >>> list (filter (func, [4, 5, 6, 0, 7, 2, 3] ) ) [4, 5, 6, 7]
>>> list (itertools.filterfalse (None, [0, 5, 6, 0, 7, 0, 3] ) ) [0, 0, 0] >>> list (filter(None, [0, 5, 6, 0, 7, 0, 3])) [5, 6, 7, 3]
Примеры:
>>> def func(x) : return x > 3 >>> list(itertools.dropwhile(func, [4, 5, 6, 0, 7, 2, 3])) [0, 7, 2, 3] >>> list(itertools.dropwhile (func, [4, 5, 6, 7, 8])) [] >>> list (itertools.dropwhile (func, [1, 2, 4, 5, 6, 7, 8])) [1, 2, 4, 5, 6, 7, 8]
>>> def func(x) : return x > 3 >>> list (itertools.takewhile (func, [4, 5, 6, 0, 7, 2, 3])) [4, 5, 6] >>> list (itertools.takewhile (func, [4, 5, 6, 7, 8])) [4, 5, 6, 7, 8] >>> list (itertools.takewhile (func, [1, 2, 4, 5, 6, 7, 8])) []
compress(<Фильтруемая последовательность>, <Последовательность логических значений>)
>>> list (itertools.compress ( 'абвгде', [1, 0, 0, 0, 1, 1])) ['а', 'д', 'е'] >>> list (itertools.compress ( 'абвгде', [True, False, True])) ['а', 'в']
На следующем шаге мы рассмотрим другие функции этого модуля.