В 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.