Лямбды

Модуль 1: Python Core
8 уровень , 1 лекция
Открыта

2.1 Определение лямбда-функций

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

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

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

 
lambda аргументы: выражение
    

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

Примеры:

Лямбда-функция Обычная функция

square = lambda x: x ** 2
print(square(5))  # Вывод: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Вывод: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

2.2 Применение лямбда-функций

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

Использование с map()

Функция map() применяет заданную функцию к каждому элементу итерируемого объекта и возвращает итератор с результатами. Лямбда-функции отлично подходят для использования с map(), поскольку позволяют лаконично определять функцию для преобразования элементов.


numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # Вывод: [1, 4, 9, 16, 25]
        

Использование с filter()

Функция filter() возвращает итератор, состоящий из элементов итерируемого объекта, для которых заданная функция возвращает True. Лямбда-функции позволяют быстро определять условие для фильтрации.


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]

Использование с sorted()

Функция sorted() сортирует элементы итерируемого объекта. Лямбда-функции могут использоваться для определения пользовательского критерия сортировки с помощью аргумента key.


words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # Вывод: ['date', 'apple', 'banana', 'cherry']
        

Лямбда-функции в выражениях

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


pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # Вывод: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
        

2.3 Ограничения лямбда-функций

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

Ограниченность выражениями:

Лямбда-функции могут содержать только одно выражение и не могут включать в себя сложные операторы, такие как циклы или операторы управления потоком (например, if, else и т.д.).

Отсутствие документации:

Лямбда-функции не могут содержать строку документации (docstring), что затрудняет документирование их функциональности.

Ограниченные возможности отладки:

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

Пример ограничения лямбда-функций

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


# Этот код вызовет ошибку
invalid_lambda = lambda x: x ** 2; print(x)
        
    
2
Задача
Модуль 1: Python Core, 8 уровень, 1 лекция
Недоступна
Лямбда в квадрате.
Лямбда в квадрате.
2
Задача
Модуль 1: Python Core, 8 уровень, 1 лекция
Недоступна
Сортировка.
Сортировка.
Комментарии (11)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Maksym Уровень 22
23 октября 2025
Почему задачи такие легкие? Даже для меня с нуля )
Oleg Уровень 34
26 сентября 2025
# Сортировка. # Напишите программу, которая использует лямбда-функцию для сортировки списка строк по их длине # с использованием функции sorted(). Программа должна: # Создать список строк. # Использовать sorted() и лямбда-функцию для сортировки строк по длине. # Вывести результат. # Напишите тут ваш код def sort_strings_by_length(): """ Создает список строк и сортирует их по длине с помощью sorted() и лямбда-функции. """ # 1. Создание списка строк words = ["Python", "программа", "сортировка", "ключ", "map", "lambda"] print("--- Исходный список строк ---") print(words) # 2. Использование sorted() и лямбда-функции для сортировки по длине # sorted(): функция для сортировки и возврата нового списка. # key=lambda x: len(x): Лямбда-функция указывает, что для каждого элемента (x) # в списке, сортировка должна использовать его длину (len(x)) в качестве ключа. sorted_words = sorted(words, key=lambda x: len(x)) print("\n--- Отсортированный список по длине ---") print(sorted_words) # Запуск программы sort_strings_by_length()
shinobi Уровень 19
28 июля 2025
Хоть бы написали, что вывод после сортировки зависит от первой буквы слова

pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # Вывод: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
Anonymous #3399726 Уровень 14
24 ноября 2025
Спасибо, помог
Николай Уровень 17
18 февраля 2025
Ещё бы понять, зачем для 2й задачи нужна lambda. 👎
SWK Уровень 26
1 апреля 2025
Так-то, она и для первой не нужна...
Дмитрий/MrJonson Уровень 92
17 февраля 2025
print(list(map(lambda x: x ** 2, [random.randint(2, 20) for _ in range(10)])))
Александр Уровень 19 Expert
3 февраля 2025
Привет! Делюсь разбором первого примера ) он вроде не сложный, но я например не понял с листа описание map, а через аналогии гораздо легче ))) --- ## 🔹 **Разбор кода**

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # Вывод: [1, 4, 9, 16, 25]
### 1️⃣ **Что делает `map()`?** `map(function, iterable)` — это встроенная функция Python, которая применяет переданную функцию ко всем элементам `iterable` (списка, множества и т. д.). **Эквивалент обычного цикла:**

squared_numbers = []
for x in numbers:
    squared_numbers.append(x ** 2)
✅ Но с `map()` это записывается **всего в одну строку**! --- ### 2️⃣ **Что такое `lambda`?** `lambda x: x ** 2` — это **анонимная функция** (без `def` и имени). Она говорит: **"Возьми `x` и возведи его в квадрат"**. Эквивалент обычной функции:

def square(x):
    return x ** 2
✅ Но с `lambda` мы можем передать её прямо внутрь `map()` **без создания отдельной функции**. --- ### 3️⃣ **Почему `list(map(...))`?** 🔹 `map()` сам по себе возвращает **итератор**, а не список. 🔹 Чтобы получить **список**, мы явно оборачиваем его в `list()`. 👉 **Без `list()`, если просто написать `print(map(...))`, мы увидим что-то вроде:**

<map object at 0x7f8e4b5d0>
💡 **То есть, без `list()` нам пришлось бы перебирать этот объект вручную (`for item in map(...)`).** --- ## 🔹 **Вывод** Этот код **быстро и лаконично**: 1. Берёт список чисел `[1, 2, 3, 4, 5]` 2. Применяет к каждому числу `lambda x: x ** 2` 3. Собирает результат обратно в список ✅ **Коротко и красиво!** 🚀
Dmitry Ryabov Уровень 23
1 февраля 2025
Крайне неочевидный пример из лекции:
 
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')] 
pairs.sort(key=lambda pair: pair[1])
print(pairs) # Вывод: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
 
Очень долго приходило понимание того каким образом здесь работает метод сортировки. В данном примере сортировка происходит по первому символу слова из кортежа.
Mr.Robot Уровень 21 Expert
1 марта 2025
Вот прям тоже сначала долго на него смотрел, потом - скопипастил побыстрому в новый файл и заменил на pair[0]. Отсортировало по возрастанию нулевых элементов кортежей - чисел. Потом прикинул как это было бы со строками - ну да - по алфавиту. Просто сбил предыдущий пример, где была сортировка по len() - мозг не успел переключиться ) А так - да - тоже уже хотел комментарий писать )
SWK Уровень 26
1 апреля 2025

В данном примере сортировка происходит по первому символу слова из кортежа.
По всем символам вторых ([1]) элементов кортежей, которые строки. Т.е., строки упорядочиваются по алфавиту.