В Python лямбда-функции — это краткий и мощный способ создания анонимных функций. Однострочники, представляющие собой небольшие фрагменты кода, которые можно записать в одну строку, — отличный пример использования лямбда-функций. В этом руководстве мы рассмотрим, как использовать лямбда-функции для создания однострочников для общих задач в Python.
Фильтрация списков с помощью Lambda
Допустим, у вас есть список чисел, и вы хотите создать новый список, содержащий только четные числа. Вы можете использовать лямбда-функцию с функцией filter()
, чтобы выполнить это в одной строке кода:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers)
Вывод будет:
[2, 4, 6, 8, 10]
В этом коде лямбда-функция принимает один аргумент x
и возвращает True
, если x
четно (т. е. если x % 2 == 0
). Затем функция filter()
применяет эту лямбда-функцию к каждому элементу списка numbers
, создавая новый список, содержащий только четные числа.
Сопоставление списков с помощью Lambda
Другой распространенной задачей является создание нового списка, который применяет функцию к каждому элементу существующего списка. Для этого вы можете использовать лямбда-функцию с функцией map()
:
numbers = [1, 2, 3, 4, 5] squared_numbers = list(map(lambda x: x**2, numbers)) print(squared_numbers)
Вывод будет:
[1, 4, 9, 16, 25]
В этом коде лямбда-функция принимает один аргумент x
и возвращает x**2
. Затем функция map()
применяет эту лямбда-функцию к каждому элементу списка numbers
, создавая новый список квадратов чисел.
Сортировка списков с помощью Lambda
Сортировка списка в Python — обычная задача, и вы можете использовать лямбда-функцию с функцией sorted()
для сортировки списка на основе пользовательского ключа:
words = ['apple', 'banana', 'cherry', 'durian', 'elderberry'] sorted_words = sorted(words, key=lambda x: len(x)) print(sorted_words)
Вывод приведенного выше оператора печати:
['apple', 'banana', 'cherry', 'durian', 'elderberry']
В этом коде лямбда-функция принимает один аргумент x
и возвращает длину x
. Затем функция sorted()
применяет эту лямбда-функцию к каждому элементу списка words
, сортируя список в порядке возрастания длины строки.
Сокращение списков с помощью Lambda
Иногда вам нужно сократить список до одного значения, например найти сумму всех элементов в списке. Для этого вы можете использовать лямбда-функцию с функцией reduce()
из модуля functools
:
from functools import reduce numbers = [1, 2, 3, 4, 5] sum_of_numbers = reduce(lambda x, y: x + y, numbers) print(sum_of_numbers) # Output: 15
В этом коде лямбда-функция принимает два аргумента x
и y
и возвращает их сумму. Функция reduce()
применяет эту лямбда-функцию к первым двум элементам списка numbers
, затем применяет ее к результату и следующему элементу, и так далее, пока не останется только одно значение — сумма всех элементов списка.
Упрощение условных выражений с помощью Lambda
Лямбда-функции также могут упростить сложные условные операторы, предоставляя краткий способ их выражения. Например, рассмотрим следующий код, который использует условное выражение для возврата максимум двух чисел:
a = 5 b = 10 maximum = a if a > b else b print(maximum) # Output: 10
Этот код можно упростить с помощью лямбда-функции:
a = 5 b = 10 maximum = (lambda x, y: x if x > y else y)(a, b) print(maximum) # Output: 10
В этом коде лямбда-функция принимает два аргумента x
и y
и возвращает x
, если x
больше y
, иначе возвращает y
. Функция немедленно вызывается со значениями a
и b
в качестве аргументов, а результат присваивается maximum
.
Заключение
Лямбда-функции — это мощный инструмент для создания анонимных функций в Python. Их можно использовать в однострочниках для фильтрации, сопоставления, сортировки, сокращения и упрощения сложных условных выражений. Освоив лямбда-функции, вы сможете писать более лаконичный и выразительный код Python.