«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как использовать лямбда-функции в Python

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

Опубликовано 15 ноября 2024 г.
Просматривать:546

How to Use Lambda Functions in Python

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

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

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

Предварительные условия

Лямбда-функции являются частью Python начиная с версии 2.0, поэтому вам понадобится:

  • Минимальная версия Python: 2.0.
  • Рекомендуемая версия Python: 3.10 или новее.

В этом уроке мы увидим, как использовать функции Lambda с библиотекой Pandas: быстрой, мощной, гибкой и простой в использовании библиотекой для анализа и манипулирования данными с открытым исходным кодом. Если он у вас не установлен, выполните следующее:

pip install pandas

Синтаксис и основы лямбда-функций для Python

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

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

lambda arguments: expression

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

add = lambda x, y: x   y

Выполните следующее:

result = add(3, 5)
print(result)

В результате:

8

Мы создали анонимную функцию, которая принимает два аргумента: x и y. В отличие от традиционных функций, лямбда-функции не имеют имени: поэтому мы говорим, что они «анонимны».

Кроме того, мы не используем оператор return, как в обычных функциях Python. Таким образом, мы можем использовать лямбда-функцию по своему желанию: ее можно распечатать (как мы это сделали в данном случае), сохранить в переменной и т. д.

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

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

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

Давайте посмотрим несколько практических примеров.

Использование лямбда-функций с функцией map()

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]

Теперь у нас есть список, содержащий квадратные корни исходных чисел.

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

Использование лямбда-функций с функцией filter()

Теперь предположим, что у нас есть список чисел и мы хотим отфильтровать четные числа.

Мы можем использовать лямбда-функцию следующим образом:

# 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()

Функция 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]

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

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

  • Краткость и читаемость при простой логике: лямбда-функции позволяют создавать краткий код, уменьшая необходимость в стандартных определениях функций. Это улучшает читаемость в тех случаях, когда логика функции проста.
  • Расширенные возможности функционального программирования: функции Lambda хорошо согласуются с принципами функционального программирования, позволяя создавать функциональные конструкции в коде Python. В частности, они облегчают использование функций высшего порядка и применение функций как первоклассных объектов.
  • Когда и почему следует предпочитать лямбда-функции: лямбда-функции особенно полезны при определении коротких, «одноразовых» функций, которые не нужно повторно использовать где-либо в коде. Поэтому они идеально подходят для встроенного использования, например, в качестве аргументов функций высшего порядка.

Ограничения и недостатки

Давайте кратко обсудим некоторые ограничения и недостатки лямбда-функций в Python:

  • Проблемы с читабельностью сложных выражений: хотя лямбда-функции кратки, их может быть сложно читать и понимать при использовании для сложных выражений. Это может привести к тому, что код будет сложнее поддерживать и отлаживать.
  • Ограничения при обработке ошибок и отладке: поскольку функции Lambda могут содержать только одно выражение, они не могут включать операторы, такие как блок try-Exception для обработки ошибок. Это ограничение делает их непригодными для сложных операций, требующих этих функций.
  • Ограниченная функциональность: поскольку лямбда-функции могут содержать только одно выражение, они менее универсальны, чем стандартные функции. Это встроенное ограничение ограничивает их использование простыми операциями и преобразованиями.

Лучшие практики использования лямбда-функций

Теперь, когда мы рассмотрели некоторые плюсы и минусы, давайте определим некоторые рекомендации по эффективному использованию функций Lambda:

  • Сохраняйте простоту: чтобы сохранить читабельность и простоту, функции Lambda должны быть короткими и ограничиваться простыми операциями. Функции со сложной логикой должны быть преобразованы в стандартные функции.
  • Избегайте чрезмерного использования: хотя функции Lambda удобны во многих ситуациях, их чрезмерное использование может привести к созданию кода, который будет сложно читать и поддерживать. Используйте их разумно и выбирайте стандартные функции, когда ясность имеет решающее значение.
  • Объедините функции Lambda с другими функциями Python: Как мы видели, функции Lambda можно эффективно комбинировать с другими функциями Python, такими как понимание списков и функции высшего порядка. При правильном использовании это может привести к более выразительному и лаконичному коду.

Продвинутые методы с лямбда-функциями

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

Давайте посмотрим несколько примеров.

Вложенные лямбда-функции

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

Этот метод полезен в сценариях, где вам необходимо выполнить несколько небольших преобразований в последовательности.

Например, предположим, что вы хотите создать функцию, которая вычисляет квадратный корень числа, а затем добавляет 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 для расширенной функциональности

Многие библиотеки 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 и никогда не пропустите ни одной публикации!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/appsignal/how-to-use-lambda-functions-in-python-3llj?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3