Опубликован: 17.12.2023 50
Lambda функция в Python — это специальный упрощенный вид функции без имени (анонимной), имеющей ограниченные возможности по сравнению с обычной функцией def
:
Синтаксис: lambda arguments: expression
arguments
— аргументы функции, разделенные запятыми (аргументы могут отсутствовать);expression
— выражение (или значение), возвращаемое функцией.Учитывая специфические особенности lambda функции, ее часто используют в качестве аргумента других функций (так называемых функций высшего порядка: map()
, filter()
, reduce()
и др. ).
В этом есть смысл, если нужна одноразовая функция с одним выражением или одним возвращаемым значением, которая больше не будет использоваться в коде. Тогда вместо определения обычной функции def
можно упростить код с помощью быстрого определения lambda функции прямо внутри функции высшего порядка.
# использование lambda с конструкцией if ... else
value = lambda x: x + 10 if x % 2 == 0 else x + 5
print(value(7))
12
print(value(8))
18
# использование lambda с функцией map()
numbers = [ 1, 2, 3, 4, 5 ]
squared = list(map(lambda num: num ** 2, numbers))
print(squared)
[1, 4, 9, 16, 25]
# использование lambda с функцией filter()
list_num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_even = list( filter( lambda x: x % 2 == 0, list_num ) )
print(list_even)
[0, 2, 4, 6, 8, 10]
# использование lambda с функцией reduce()
from functools import reduce
list_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
factorial = reduce(lambda x, y: x * y, list_num)
print(factorial)
3628800
# использование lambda для сортировки словаря по значениям
good_prices = {"бананы": 130, "сливы": 125, "арбуз": 50, "лимоны": 95}
print( dict( sorted( good_prices.items(), key=lambda x: x[1] ) ) )
{'арбуз': 50, 'лимоны': 95, 'сливы': 125, 'бананы': 130}
Таким образом, lambda функции являются удобным и эффективным инструментом программиста, который может использоваться для упрощения и повышения читабельности кода.
Оценка основных статистических метрик набора данных в Python
Логические выражения if ... else в Pythonic стиле
Способы удаления лишних пробелов в строке
Использование аннотации типов в Python
Комментариев нет.