DevGang
Авторизоваться

lambda, map и filter в Python

Разберем как пользоваться lambda функциями в Python и как применять их при фильтрации и обходе по спискам

lambda

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

Базовый синтаксис:

lambda arguments : expression

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

Пример:

def add(x, y): 
    return x + y
  
# Вызываем функцию
add(2, 3)  # Результат: 5

Выше мы создали функцию с именем add, которая принимает два аргумента x и y и возвращает их сумму.

Давайте посмотрим как эта простейшая функция будет выглядить с применением lambda:

add = lambda x, y : x + y 
  
print add(2, 3) # Результат: 5

В lambda x, y: x + y; x и y являются аргументами функции, а x + y - это выражение, которое выполняется, и его значения возвращаются в качестве вывода.

lambda x, y: x + y возвращает объект функции, который может быть назначен любой переменной, в этом случае функциональный объект присваивается переменной add.

type (add) # Возвращет: function

Если мы проверим тип add, это function.

map

Базовый синтаксис:

map(function_object, iterable1, iterable2,...)

Функция map первым аргументом ожидает объект функции и любое количество объектов для перебора, таких как dict или list. Он выполняет function_object для каждого элемента в последовательности и возвращает список элементов, измененных объектом функции.

def multiply2(x):
  return x * 2
    
map(multiply2, [1, 2, 3, 4])  # Вернет [2, 4, 6, 8]

В приведенном выше примере map выполняет функцию multiply2 для каждого элемента в списке [1, 2, 3, 4] и возвращает [2, 4, 6, 8]

Давайте посмотрим, как мы можем написать приведенный выше код с помощью map и lambda.

map(lambda x : x*2, [1, 2, 3, 4]) #Вернет [2, 4, 6, 8]

Всего одна строка кода и все.

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
  
map(lambda x : x['name'], dict_a) # Вернет: ['python', 'java']
  
map(lambda x : x['points']*10,  dict_a) # Вернет: [100, 80]

map(lambda x : x['name'] == "python", dict_a) # Вернет: [True, False]

В приведенном выше примере каждый объект dict_a будет передан как параметр функции лямбда

filter

Базовый синтаксис:

filter(function_object, iterable)

Функция filter ожидает два аргумента, function_object и iterable. function_object должна возвращать логическое значение. function_object вызывается для каждого элемента итерации, и фильтр возвращает только те элементы, для которых function_object возвращает true.

Подобно функции map, функция filter также возвращает список элементов. В отличие от map функция filter может принять только один итерируемый объект.

Пример:

a = [1, 2, 3, 4, 5, 6]
filter(lambda x : x % 2 == 0, a) # Вернет: [2, 4, 6]

Обработка объектов:

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]

filter(lambda x : x['name'] == 'python', dict_a) # Вернет: [{'name': 'python', 'points': 10}]
#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

В этом месте могла бы быть ваша реклама

Разместить рекламу