Начало работы с универсальной функцией

Что такое лямбда-функция

Анонимная функция — это функция без имени. В Python анонимная функция определяется с помощью ключевого слова lambda. Это связано с тем, что лямбда-функции не требуют имени при определении, в отличие от обычных функций. Вместо использования ключевого слова def мы используем ключевое слово lambda для создания функции. Вот почему анонимная функция также называется лямбда-функцией.

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

lambda argument(s): expression

Когда использовать лямбда-функцию

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

Более того, в определении лямбда нет оператора «возврата»; вместо этого он всегда включает возвращаемое выражение. Поэтому для простоты можно рассмотреть возможность использования функции lambda.

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

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

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

Лямбда и применить

Я объясню использование лямбда-функции на разных примерах. Во-первых, давайте создадим простой фрейм данных для манипуляций.

grade = {'Class':['A1', 'A2', 'A3', 'A4','A5'],
        'MathScore':[3.2, 3.3, 2.1, 2.9, 3.6],
        'ChemistryScore': [3.2, 3.6,3.3,2.1,4.6]}
grade = pd.DataFrame(grade)

Набор данных иллюстрирует средние баллы по математике и химии для пяти классов от A1 до A5.

Например, я хочу оценить математические способности каждого класса на основе специальной формулы, которая возводит оценку по математике в степень самой оценки по математике, а затем делит результат на 2. Вот как я вычисляю, используя lambdafunction.

grade['evaluate']=grade['MathScore'].apply(lambda x: round((x**x)/2,2))

Метод apply вызывает функцию lambda и применяет вычисления к каждой строке фрейма данных. Кроме того, apply также может выполнять модификацию для каждого столбца во фрейме данных. В этом случае укажите еще один аргумент как axis = 0 в функции apply. Мой результат после расчета сохраняется в столбце оценить, как вы можете видеть ниже.

Вывод:

В другом примере с нашим фреймом данных (рис. 1) выше я хочу классифицировать классы на основе их результатов по математике и химии. Мы можем использовать lambda, чтобы легко понять это.

grade['group']=grade['MathScore'].apply(lambda x: 'Excellent' if x>=3.0 else 'Average')

Вывод:

Лямбда и подсписок

Предположим, у меня есть список, как показано ниже:

list = [[5,6],[12,32,43],[3,43,42]]

Чтобы найти подсписок с максимальными значениями, я могу применить функцию lambda и max следующим образом:

max(list, key=lambda x: sum(x))

В результате [3,43,42] является подсписком с наибольшим общим значением среди трех подсписков.

Лямбда и если-иначе

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

Greater = lambda x, y : x if(x > y) else y
Greater(0.002, 0.5897)

И получается результат 0,5897. Просто, верно?

Лямбда и фильтр

Продолжайте использовать пример фрейма данных с рисунка 1, я узнаю, на сколько баллов по математике больше среднего балла. Метод filter может фильтровать данные, применяя лямбда-функцию к ряду. Вот как это происходит:

mean = mean(grade['MathScore'])
list(filter(lambda x: x> mean,grade['MathScore']))

Результатом является список оценок по математике, превышающих среднее значение: [3.2, 3.3, 3.6]

В другом случае я хочу найти пересечение вложенных списков методом filter. Посмотрите, что у меня есть в двух списках ниже:

group1 = [1, 2,3,43,23,42,8,3,7]
group2 = [[3, 34, 23, 32, 42], [6, 11, 9], [1, 3,9,7,2,8]]

Теперь, применив следующий код, я могу узнать список, в котором значения в группе 2 также присутствуют в группе 1:

[list(filter(lambda x: x in group1, sublist)) for sublist in group2]

Вывод:[[3, 23, 42], [], [1, 3, 7, 2, 8]]

Вкратце объясним, что метод фильтра проверяет каждый элемент подсписка, чтобы определить, включен ли он в группу 1. Понимание списка применяется к каждому подсписку в группе 2.

Заключение

Выше приведены несколько простых примеров lambda.надеюсь, вы найдете их полезными. Если у вас есть интересные приложения, не стесняйтесь поделиться ими со мной.

Чтобы получать обновления о моих предстоящих сообщениях, подпишитесь как участник, используя предоставленную Medium Link..