Рубрики
Без рубрики

Лямбда выражения в Python

Автор оригинала: 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 и применить лямбда выражения. Значения, которые возвращают Ложь отфильтровываются.

Больше информации: