Шаг 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().




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