Лямбда-функции в Python — это мощный способ создания небольших анонимных функций на лету. Эти функции обычно используются для коротких и простых операций, где ненужны затраты на полное определение функции.
В то время как традиционные функции определяются с использованием ключевого слова def, лямбда-функции определяются с использованием ключевого слова лямбда и напрямую интегрируются в строки кода. В частности, они часто используются в качестве аргументов встроенных функций. Они позволяют разработчикам писать чистый и читаемый код, устраняя необходимость во временных определениях функций.
В этой статье мы рассмотрим, что делают функции Lambda, и их синтаксис. Мы также предоставим несколько примеров и лучшие практики их использования, а также обсудим их плюсы и минусы.
Лямбда-функции являются частью Python начиная с версии 2.0, поэтому вам понадобится:
В этом уроке мы увидим, как использовать функции Lambda с библиотекой Pandas: быстрой, мощной, гибкой и простой в использовании библиотекой для анализа и манипулирования данными с открытым исходным кодом. Если он у вас не установлен, выполните следующее:
pip install pandas
Во-первых, давайте определим синтаксис, который разработчики должны использовать для создания лямбда-функций.
Лямбда-функция определяется с помощью ключевого слова лямбда, за которым следуют один или несколько аргументов и выражение:
lambda arguments: expression
Предположим, мы хотим создать лямбда-функцию, которая складывает два числа:
add = lambda x, y: x y
Выполните следующее:
result = add(3, 5) print(result)
В результате:
8
Мы создали анонимную функцию, которая принимает два аргумента: x и y. В отличие от традиционных функций, лямбда-функции не имеют имени: поэтому мы говорим, что они «анонимны».
Кроме того, мы не используем оператор return, как в обычных функциях Python. Таким образом, мы можем использовать лямбда-функцию по своему желанию: ее можно распечатать (как мы это сделали в данном случае), сохранить в переменной и т. д.
Теперь давайте рассмотрим некоторые распространенные случаи использования лямбда-функций.
Лямбда-функции особенно используются в ситуациях, когда нам нужна временно простая функция. В частности, они обычно используются в качестве аргументов для функций высшего порядка.
Давайте посмотрим несколько практических примеров.
map() — это встроенная функция, которая применяет заданную функцию к каждому элементу итерации и возвращает объект карты с результатами.
Например, предположим, что мы хотим вычислить квадратные корни каждого числа в списке. Мы могли бы использовать функцию Lambda следующим образом:
# Define the list of numbers numbers = [1, 2, 3, 4] # Calculate square values and print results squared = list(map(lambda x: x ** 2, numbers)) print(squared)
В результате:
[1, 4, 9, 16]
Теперь у нас есть список, содержащий квадратные корни исходных чисел.
Как мы видим, это значительно упрощает процессы использования функций на лету, которые не нужно повторно использовать позже.
Теперь предположим, что у нас есть список чисел и мы хотим отфильтровать четные числа.
Мы можем использовать лямбда-функцию следующим образом:
# Create a list of numbers numbers = [1, 2, 3, 4] # Filter for even numbers and print results even = list(filter(lambda x: x % 2 == 0, numbers)) print(even)
В результате:
[2,4]
Функция sorted() в Python возвращает новый отсортированный список из элементов любой итерации. Используя лямбда-функции, мы можем применять к этим спискам определенные критерии фильтрации.
Например, предположим, что у нас есть список точек в двух измерениях: (x,y). Мы хотим создать список, который будет постепенно упорядочивать значения y.
Мы можем сделать это так:
# Creates a list of points points = [(1, 2), (3, 1), (5, -1)] # Sort the points and print points_sorted = sorted(points, key=lambda point: point[1]) print(points_sorted)
И получаем:
[(5, -1), (3, 1), (1, 2)]
Благодаря своей лаконичности лямбда-функции могут быть встроены в генераторы списков для оперативных вычислений.
Предположим, у нас есть список чисел. Мы хотим:
Вот как мы можем это сделать:
# Create a list of numbers numbers = [1, 2, 3, 4] # Calculate and print the double of each one squared = [(lambda x: x ** 2)(x) for x in numbers] print(squared)
И получаем:
[1, 4, 9, 16]
На основе рассмотренных нами примеров давайте рассмотрим некоторые преимущества использования лямбда-функций:
Давайте кратко обсудим некоторые ограничения и недостатки лямбда-функций в Python:
Теперь, когда мы рассмотрели некоторые плюсы и минусы, давайте определим некоторые рекомендации по эффективному использованию функций Lambda:
В некоторых случаях могут помочь более продвинутые методы лямбда-функций.
Давайте посмотрим несколько примеров.
Лямбда-функции могут быть вложенными для выполнения сложных операций.
Этот метод полезен в сценариях, где вам необходимо выполнить несколько небольших преобразований в последовательности.
Например, предположим, что вы хотите создать функцию, которая вычисляет квадратный корень числа, а затем добавляет 1. Вот как вы можете использовать для этого функции Lambda:
# Create a nested lambda function nested_lambda = lambda x: (lambda y: y ** 2)(x) 1 # Print the result for the value 3 print(nested_lambda(3))
Вы получаете:
10
Многие библиотеки Python используют функции Lambda для упрощения сложных задач обработки данных.
Например, функции Lambda можно использовать с Pandas и NumPy для упрощения манипулирования и преобразования данных.
Предположим, у нас есть фрейм данных с двумя столбцами. Мы хотим создать еще один столбец, который будет суммой двух других. В этом случае мы можем использовать лямбда-функции следующим образом:
# Create the columns' data data = {'A': [1, 2, 3], 'B': [4, 5, 6]} # Create data frame df = pd.DataFrame(data) # Create row C as A B and print the dataframe df['C'] = df.apply(lambda row: row['A'] row['B'], axis=1) print(df)
И получаем:
A B C 0 1 4 5 1 2 5 7 2 3 6 9
На этом наш краткий обзор лямбда-функций в Python закончен!
В этой статье мы увидели, как использовать функции Lambda в Python, изучили их плюсы и минусы, некоторые лучшие практики и затронули несколько продвинутых вариантов использования.
Удачного программирования!
P.S. Если вы хотите читать статьи о Python, как только они выйдут из печати, подпишитесь на нашу рассылку новостей Python Wizardry и никогда не пропустите ни одной публикации!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3