Лямбда-функции — это компактный способ создания небольших анонимных функций прямо в том месте, где они нужны. Вместо того чтобы писать полноценное определение через def, можно уместить всю логику в одну строку с помощью ключевого слова lambda. Такие функции особенно полезны когда нужно передать простую операцию в качестве аргумента другой функции — например, в map(), filter() или sorted(). В этом тренажере ты научишься создавать лямбда-функции, понимать их синтаксис и применять вместе со встроенными функциями высшего порядка. Задания идут от базового синтаксиса к практическим сценариям использования. Обрати внимание на то, что лямбда-функции могут принимать несколько аргументов, но всегда содержат только одно выражение — никаких многострочных блоков кода.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Базовый синтаксис лямбда-функции
Создайте лямбда-функцию, которая принимает один аргумент и возвращает его квадрат. Затем вызовите эту функцию с числом 5.
square = input1S x: x ** 2
result = square(input2S)
print(result)Что вернёт лямбда-функция?
Проанализируйте код с лямбда-функцией, которая принимает два аргумента. Определите, что будет выведено на экран.
multiply = lambda a, b: a * b
print(multiply(4, 7))Сопоставьте лямбда-функции с их результатами
Каждая лямбда-функция в левой колонке вызывается с определёнными аргументами. Сопоставьте их с результатами в правой колонке.
Исправьте синтаксис лямбда-функции
В этом коде допущена синтаксическая ошибка в определении лямбда-функции. Найдите и исправьте её, чтобы код корректно вычислял сумму трёх чисел.
add_three = lambda (a, b, c): a + b + cresult = add_three(1, 2, 3)print(result)Соберите лямбда-функцию для фильтрации
Используя токены из банка, соберите код, который отфильтрует из списка только чётные числа с помощью функции filter() и лямбда-выражения.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even = input1S(input2S x: x input3S 2 == 0, input4S)
print(list(even))Вычислите результат map с лямбдой
Функция map() применяет лямбда-функцию к каждому элементу списка. Определите, какое число будет на первой позиции в результирующем списке.
nums = [3, 1, 4, 1, 5]
doubled = list(map(lambda x: x * 2, nums))
print(doubled[0])Классифицируйте выражения
Распределите код по категориям: какие выражения являются корректными лямбда-функциями, а какие содержат ошибки или вообще не являются лямбда-функциями.
lambda x: x + 1lambda: 42lambda x: print(x)def f(x): return xlambda x, y: x if x > y else ylambda x: return xСоберите код сортировки с ключом
Соберите код, который сортирует список словарей по ключу 'age' в порядке возрастания. Используется функция sorted() с параметром key.
sorted_people = sorted(people, key=lambda p: p['age'])print(sorted_people[0]['name'])people = [{'name': 'Bob', 'age': 30}, {'name': 'Alice', 'age': 25}]for person in people: print(person)sorted_people = people.sort(key='age')Лямбда с условным выражением
Лямбда-функции могут содержать тернарный оператор (условное выражение). Определите результат выполнения кода.
classify = lambda n: 'positive' if n > 0 else 'non-positive'
print(classify(-5))Немедленный вызов лямбда-функции (IIFE)
Лямбда-функцию можно вызвать сразу после создания, обернув её в скобки. Заполните пропуски, чтобы создать и немедленно вызвать лямбда-функцию, вычисляющую куб числа 3.
result = (input1S x: x ** input2S)(input3S)
print(result)Порядок операций с reduce
Расставьте строки в правильном порядке, чтобы получить код, вычисляющий произведение всех чисел в списке с помощью функции reduce() и лямбда-функции.
print(product)from functools import reduceproduct = reduce(lambda x, y: x * y, numbers)numbers = [2, 3, 4, 5]Цепочка map и filter
Код сначала фильтрует числа больше 2, затем умножает каждое на 10. Определите сумму элементов итогового списка.
nums = [1, 2, 3, 4, 5]
filtered = filter(lambda x: x > 2, nums)
mapped = map(lambda x: x * 10, filtered)
print(sum(mapped))Исправьте лямбду в sorted()
Код должен сортировать строки по их длине, но содержит ошибку. Найдите и исправьте строку с ошибкой.
words = ['apple', 'pie', 'extraordinary', 'cat']sorted_words = sorted(words, key=lambda w: length(w))print(sorted_words)Лямбда с распаковкой кортежа
Код сортирует список кортежей по второму элементу каждого кортежа. Определите, какой кортеж окажется первым после сортировки.
pairs = [(1, 'b'), (2, 'a'), (3, 'c')]
sorted_pairs = sorted(pairs, key=lambda item: item[1])
print(sorted_pairs[0])Соберите функцию-генератор лямбд
Соберите код, который создаёт функцию-генератор множителей. Функция make_multiplier должна возвращать лямбда-функцию, умножающую на заданное число. Результат вызова make_multiplier(3)(5) должен быть 15.
return lambda x: x * ndef make_multiplier(n):print(triple(5))triple = make_multiplier(3)return x * ndef make_multiplier(x, n):triple = lambda: make_multiplier(3)