Автор оригинала: FreeCodeCapm Team.
Лямбда выражения
Выражения лямбда в идеале используются, когда нам нужно сделать что-то простое и более заинтересованы в том, чтобы сделать работу быстро, а не формально назвать функцию. Выражения лямбда также известны как анонимные функции.
Выражения лямбда в Python – это короткий способ объявить небольшие и анонимные функции (не нужно давать имя для функций лямбда).
Функции лямбда ведут себя как правильные функции, объявленные с def
ключевое слово. Они пригодится, когда вы хотите определить небольшую функцию в кратком уровне. Они могут содержать только одно выражение, поэтому они не лучше всего подходят для функций с операторами управления.
Синтаксис функции лямбда
лямбда аргументы: выражение
Функции лямбда могут иметь любое количество аргументов, но только одно выражение.
Пример код
# Lambda function to calculate square of a number square = lambda x: x ** 2 print(square(3)) # Output: 9 # Traditional function to calculate square of a number def square1(num): return num ** 2 print(square(5)) # Output: 25
В приведенном выше примере Lambda лямбда х: х ** 2
дает анонимный объект функции, который может быть связан с любым именем. Итак, мы связали функциональный объект с квадрат
Отказ Так что отныне мы можем назвать квадрат
Объект как любая традиционная функция, например Квадрат (10)
Примеры функций лямбда
Новичок
lambda_func = lambda x: x**2 # Function that takes an integer and returns its square lambda_func(3) # Returns 9
Средний
lambda_func = lambda x: True if x**2 >= 10 else False lambda_func(3) # Returns False lambda_func(4) # Returns True
Сложный
my_dict = {"A": 1, "B": 2, "C": 3} sorted(my_dict, key=lambda x: my_dict[x]%3) # Returns ['C', 'A', 'B']
Использование
Допустим, вы хотите отфильтровать нечетные числа из A Список
Отказ Вы могли бы использовать для
петля:
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] filtered = [] for num in my_list: if num % 2 != 0: filtered.append(num) print(filtered) # Python 2: print filtered # [1, 3, 5, 7, 9]
Или вы можете написать это как один вкладыш со ссылкой:
filtered = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] if x % 2 != 0]
Но вы можете испытать соблазн использовать встроенный Фильтр
функция. Почему? Первый пример слишком многословным, и одноклассник может быть сложнее, чтобы понять. Но Фильтр
предлагает лучшее из обоих слов. Более того, встроенные функции обычно быстрее.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] filtered = filter(lambda x: x % 2 != 0, my_list) list(filtered) # [1, 3, 5, 7, 9]
ПРИМЕЧАНИЕ: в Python 3 встроенные функции Возврат генератора объектов, поэтому вы должны позвонить Список
Отказ В Python 2, с другой стороны, они возвращают Список
, кортеж
или строка
Отказ
Так что случилось? Вы сказали Фильтр
взять каждый элемент в my_list
и применить лямбда выражения. Значения, которые возвращают Ложь
отфильтровываются.