Лямбда функции python try

Lambda Functions with Example and Error Handling

Writing immediate functions in dirty ways. It is not recommended for all situations, however, it’s convenient

Prerequisites

Before going through this, you need to be familiar with defining your own function in Python; otherwise, you will get lost in the middle. The articles below will give you more information on how to define your own function.

Writing Your Own Functions

A data scientist will need functions that have specific functionality

Scope of Variable and LEGB Rule

The scope of a variable refers to the places that you can see or access a variable

Function Arguments: Default, Keyword, and Arbitrary

Define a function that takes a variable number of arguments

There is a more agile way to write functions on the fly, and these are called lambda functions. It is because we use the keyword lambda . For example, we write a function called raise_number_to_power as a lambda function. After the keyword lambda, we specify the names of the arguments, which is x and y . Then, we use a colon, followed by the expression that defines what we wish the function to return.

Читайте также:  Java отследить изменение файла

Lambda functions allow you to write immediate functions in dirty ways, so I wouldn’t recommend you to use them all the time, but there are situations when they can come in very helpful. For example, the map function, which takes two arguments. A function and a sequence such as a list, and the function over all elements of the sequence.

Источник

Лямбда-функция в Python простыми словами

В этой статье вы подробнее изучите анонимные функции, так же называемые «лямбда-функции». Давайте разберемся, что это такое, каков их синтаксис и как их использовать ( с примерами).

Лямбда-функции в Python являются анонимными. Это означает, что функция безымянна. Как известно, ключевое слов def используется в Python для определения обычной функции. В свою очередь, ключевое слово lambda используется для определения анонимной функции.

Лямбда-функция имеет следующий синтаксис.

Lambda аргументы: выражение

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

1.1. Пример лямбда-функции.

Ниже представлен пример лямбда-функции, удваивающей вводимое значение.

double = lambda x: x*2 print(double(5))

В вышеуказанном коде lambda x: x*2 — это лямбда-функция. Здесь x — это аргумент, а x*2 — это выражение, которое вычисляется и возвращается.

Эта функция безымянная. Она возвращает функциональный объект с идентификатором double . Сейчас мы можем считать её обычной функцией.

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

2. Различие между обычной функцией и лямбда-функцией

Рассмотрим пример и попробуем понять различие между определением ( Def ) для обычной функции и lambda функции. Этот код возвращает заданное значение, возведенное в куб:

def defined_cube(y): return y*y*y lambda_cube = lambda y: y*y*y print(defined_cube(2)) print(lambda_cube(2))

Как показано в примере выше, обе представленные функции, defined_cube() и lambda_cube() , ведут себя одинаково, как и предполагалось.

Разберем вышеуказанный пример подробнее:

  • Без использования лямбды: Здесь обе функции возвращают заданное значение, возведенное в куб. Но при использовании def , нам пришлось определить функцию с именем и defined_cube() дать ей входную величину. После выполнения нам также понадобилось возвратить результат, из того места, откуда была вызвана функция, и мы сделали это, используя ключевое слово return .
  • С применением лямбды: Определение лямбды не включает оператор return , а всегда содержит возвращенное выражение. Мы также можем поместить определение лямбды в любое место, где ожидается функция, и нам не нужно присваивать его переменной. Так выглядят простые лямбда-функции.

3. Лямбда-функции и функции высшего порядка

Мы используем лямбда-функцию, когда нам ненадолго требуется безымянная функция.

В Python мы часто используем их как аргумент функции высшего порядка (функции, которая принимает другие функции в качестве аргументов). Лямбда-функции используют вместе с такими встроенными функциями как filter() , map() , reduce() и др.

Давайте рассмотрим еще несколько распространенных вариантов использования лямбда-функций.

3.1. Пример с filter()

Функция filter() в Python принимает в качестве аргументов функцию и список .

Функция вызывается со всеми элементами в списке, и в результате возвращается новый список, содержащий элементы, для которых функция результирует в True .

Вот пример использования функции filter() для отбора четных чисел из списка.

my_list = [1, 3, 4, 6, 10, 11, 15, 12, 14] new_list = list(filter(lambda x: (x%2 == 0) , my_list)) print(new_list)

3.2. Пример с map()

Функция map() принимает в качестве аргументов функцию и список.

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

Ниже пример использования функции map() для удвоения всех элементов списка.

current_list = [1, 3, 4, 6, 10, 11, 15, 12, 14] new_list = list(map(lambda x: x*2 , current_list)) print(new_list)

3.3. Пример с reduce()

Функция reduce() принимает в качестве аргументов функцию и список. Функция вызывается с помощью лямбда-функции и итерируемого объекта и возвращается новый уменьшенный результат. Так выполняется повторяющаяся операцию над парами итерируемых объектов. Функция reduce() входит в состав модуля functools .

from functools import reduce current_list = [5, 15, 20, 30, 50, 55, 75, 60, 70] summa = reduce((lambda x, y: x + y), current_list) print(summa)

Здесь результаты предыдущих двух элементов суммируются со следующим элементом, и это продолжается до конца списка, вот так:

4. Лямбда и списковое включение

В этом примере мы будем использовать лямбда-функцию со списковым включением и лямбда-функцию с циклом for . Мы выведем на экран таблицу из 10 элементов.

tables = [lambda x = x: x*10 for x in range(1, 11)] for table in tables: print(table())
10 20 30 40 50 60 70 80 90 100

5. Лямбда и условные операторы

Давайте рассмотрим использование условий if-else в лямбда-функции. Как вы знаете, Python позволяет нам использовать однострочные условия, и именно их мы можем помещать в лямбда-функцию для обработки возвращаемого результата.

Например, есть две цифры, и вы должны определить, какая из них представляет наибольшее число.

max_number = lambda a, b: a if a > b else b print(max_number(3, 5))

Этот метод позволяет вам добавлять условия в лямбда-функции.

6. Лямбда и множественные операторы

Лямбда-функции не допускают использования нескольких операторов, однако мы можем создать две лямбда-функции, а затем вызвать вторую лямбда-функцию в качестве параметра для первой функции. Давайте попробуем найти второй по величине элемент, используя лямбду.

current_list = [[10,6,9],[0, 14, 16, 80],[8, 12, 30, 44]] sorted_list = lambda x: (sorted(i) for i in x) second_largest = lambda x, func: [y[len(y)-2] for y in func(x)] result = second_largest(current_list, sorted_list) print(result)

В предыдущем примере, мы создали лямбда-функцию, которая сортирует каждый вложенный список в заданном списке. Затем этот список проходит как параметр для второй лямбда-функции, которая возвращает элемент n-2 из отсортированного списка, где n — длина вложенного списка.

Заключение

Теперь вы знаете как использовать в Python lambda -функции и можете:

  • Писать и использовать лямбда-функции.
  • Рационально выбирать между обычными и лямбда-функциями в Python.
  • Использовать лямбды с функциями высшего порядка или ключевыми функциями.
  • Использовать лямбды с абстракциями списков.
  • Добавлять условия к лямбда-функциям.

Источник

Оцените статью