Шаг 69.
Основы языка Python.
Списки, кортежи, множества и диапазоны. Функция filter()

    На этом шаге мы рассмотрим назначение и использование этой функции.

    Функция filter () позволяет выполнить проверку элементов последовательности. Формат функции:

  filter(<Функция>, <Последовательность>)

    Если в первом параметре вместо названия функции указать значение None, то каждый элемент последовательности будет проверен на соответствие значению True. Если элемент в логическом контексте возвращает значение False, то он не будет добавлен в возвращаемый результат. Функция возвращает объект, поддерживающий итерации (а не список или кортеж, как это было ранее в Python 2). Чтобы получить список в версии Python 3, необходимо результат передать в функцию list (). Пример:

>>> filter ( None, [1, 0, None, [], 2] )
<filter object at 0x00FD58B0>
>>> list (filter ( None, [1, 0, None, [], 2] ) )
[1, 2]

    Аналогичная операция с использованием генераторов списков выглядит так:

>>> [ i for i in [1, 0, None, [], 2] if  i ]
[1, 2]

    В первом параметре можно указать ссылку на функцию. В эту функцию в качестве параметра будет передаваться текущий элемент последовательности. Если элемент нужно добавить в возвращаемое функцией filter () значение, то внутри функции обратного вызова следует вернуть значение True, в противном случае - значение False. Удалим все отрицательные значения из списка:

def  func(elem):
    return elem >= 0

arr = [-1, 2, -3, 4, 0, -20, 10]
arr = list( filter( func, arr))
print( arr ) # Результат: [2, 4, 0, 10]

# Использование генераторов списков
arr = [-1, 2, -3, 4, 0, -20, 10]
arr = [ i for i in arr if func(i) ]
print( arr ) # Результат: [2, 4, 0, 10]
Архив с файлом можно взять здесь.

    На следующем шаге мы рассмотрим функцию reduce ().




Предыдущий шаг Содержание Следующий шаг