Lambda функции существуют во многих языках программирования, в том числе они поддерживаются и в Python.
По сути это такие функции, у которых нет имени (анонимные функции), но тем не менее она может быть присвоена переменной.
# определение lambda функции value = lambda [аргументы] : выражение # вызов lambda функции value(N)
Lambda функция может принимать один или несколько аргументов либо ни одного:
# lambda функция welcome не содержит аргументов welcome = lambda : print('Welcome!') welcome() # lambda функция square, которая возводит число в квадрат (передан 1 аргумент "x") square = lambda x : x ** 2 print(square(3)) # out: 9 # lambda функция welcome, которая выводит приветствие (передан 1 аргумент "user") welcome = lambda user: print(f'Привет, {user}!') welcome('Сергей') # out: "Привет, Сергей!" # lambda функция get_sum, которая суммирует все переданные в нее аргументы (переданы 3 аргумента: a, b, c) get_sum = lambda a, b, c : a * b * c get_sum(3, 5, 7)
Объявление и вычисление lambda функции в одно действие (без присваивания переменной):
# для переданного числа 10 возводит его в куб (lambda x: x**3)(10) # out: 1000
Используя map можно для каждого элемента списка вычислить lambda функцию:
# для каждого элемента из array вычисляем квадрат и помещаем его в список square_list array = [2, 3, 5, 6, 9] square_list = list(map(lambda x: x**2, array)) print(square_list) # out: [4, 9, 25, 36, 81] # тоже самое можно сделать и так, без использования lambda square_list = [x**2 for x in array] print(square_list) # out: [4, 9, 25, 36, 81]
Используя pandas, в датафрейме можно получить новое свойство (столбец) путем lambda вычисления, передав в аргументы существующие свойства:
import pandas as pd df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B']) df['C'] = df.apply(lambda i: i['A']*i['B'], axis=1) # ВЫВОД: A B C 0 4 9 36 1 4 9 36 2 4 9 36
Также можно использовать условные операторы в lambda функции, например, предотвращаем деление на ноль:
df['C'] = df.apply(lambda i: i['A'] / i['B'] if i['B'] > 0 else 0, axis=1)