Python: фильтрация списка с помощью лямбда-функции

Общим требованием при написании программы на Python является возможность фильтровать списки на основе заданных условий. Из этого туториала вы узнаете, как фильтровать список с помощью лямбда-функции в Python.

Применение списков фильтрации бесконечно, и мы рассмотрим примеры, которые покажут вам некоторые из них.

Как отфильтровать список с помощью лямбда-выражения в Python

Python предоставляет встроенную функцию, которая, используемая с лямбда-функцией, позволяет фильтровать список на основе определенных условий: функция filter().

Ниже вы можете увидеть синтаксис функции filter(), которая принимает два аргумента: первый аргумент — функция, а второй аргумент — итерируемый:

filter(function, iterable)

Используя функцию filter() по заданному списку, вы можете создать новый список, содержащий только те элементы исходного списка, которые соответствуют условию фильтрации. Лямбда-функция позволяет определить это условие.

Например, имея список чисел, давайте посмотрим, как создать список, включающий только отрицательные числа.

Вот лямбда-функция, которую мы будем использовать:

lambda x: x < 0

Откройте оболочку Python и выполните эту лямбду, передав ей пару чисел. Это покажет вам, как работает это лямбда-выражение.

>>> (lambda x: x < 0)(-1)
True
>>> (lambda x: x < 0)(3)
False

Примечание. В приведенном выше фрагменте кода мы использовали круглые скобки для вызова нашей лямбда-функции и передачи ей аргумента.

Наша лямбда-функция проверяет, является ли число отрицательным, и возвращает логическое значение со следующим значением:

  • True, если аргумент отрицательный.
  • False, если аргумент положительный.

Теперь давайте применим функцию filter() и эту лямбду к списку целых чисел, чтобы получить только отрицательные:

>>> numbers = [1, 3, -1, -4, -5, -35, 67]
>>> negative_numbers = list(filter(lambda x: x < 0, numbers))
>>> negative_numbers
[-1, -4, -5, -35]

Вы получаете ожидаемый результат — список, содержащий все отрицательные целые числа.

Функция фильтра возвращает список, содержащий подмножество элементов исходного списка.

Примеры функций filter() и лямбда, используемых для фильтрации списка

Давайте посмотрим еще на несколько примеров фильтрации. Эти примеры дадут вам больше идей о том, как использовать лямбда-выражения Python для фильтрации списков.

Учитывая список команд Linux, возвращайте те, которые начинаются с буквы «c».

>>> commands = ['ls', 'cat', 'find', 'echo', 'top', 'curl']
>>> list(filter(lambda cmd: cmd.startswith('c'), commands))
['cat', 'curl']

Создайте список чисел с помощью функции диапазона Python и верните числа больше четырех:

>>> list(filter(lambda x: x > 4, range(15)))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

Фильтровать четные числа из списка

>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(filter(lambda x: x % 2 == 0, numbers))
[2, 4, 6, 8, 10]

Фильтрация слов длиннее определенной длины

>>> words = ["lambda", "filter", "python", "list", "programming", "function"]
>>> list(filter(lambda w: len(w) > 6, words))
['programming', 'function']

Заключение

Молодцы, что завершили этот урок!

Теперь вы можете начать использовать функции filter() и лямбда для фильтрации элементов в списке на основе того, что вам нужно в ваших программах Python.

Убедитесь, что примеры использования filter() в Python понятны, опробовав их в своей собственной оболочке Python или IDE.