Начало работы с универсальной функцией
Что такое лямбда-функция
Анонимная функция — это функция без имени. В 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. Вот как я вычисляю, используя lambda
function.
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..