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

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

Лямбда-функции — это компактный способ создания небольших анонимных функций прямо в том месте, где они нужны. Вместо того чтобы писать полноценное определение через def, можно уместить всю логику в одну строку с помощью ключевого слова lambda. Такие функции особенно полезны когда нужно передать простую операцию в качестве аргумента другой функции — например, в map(), filter() или sorted(). В этом тренажере ты научишься создавать лямбда-функции, понимать их синтаксис и применять вместе со встроенными функциями высшего порядка. Задания идут от базового синтаксиса к практическим сценариям использования. Обрати внимание на то, что лямбда-функции могут принимать несколько аргументов, но всегда содержат только одно выражение — никаких многострочных блоков кода.

Список тем

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

id: 40044_task1

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

Заполните пропуски
square = input1S x: x ** 2
result = square(input2S)
print(result)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что вернёт лямбда-функция?

id: 40044_task2

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

Выберите правильный вариант ответа
multiply = lambda a, b: a * b
print(multiply(4, 7))
Сообщения
Проверить
Показать подсказку

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

id: 40044_task3

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

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
(lambda x: x + 10)(5)
(lambda x, y: x // y)(17, 5)
(lambda s: s.upper())('hello')
(lambda x: x % 3)(14)
3
HELLO
2
15
Сообщения
Проверить
Показать подсказку

Исправьте синтаксис лямбда-функции

id: 40044_task4

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

Найдите ошибку и исправьте
add_three = lambda (a, b, c): a + b + c
result = add_three(1, 2, 3)
print(result)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите лямбда-функцию для фильтрации

id: 40044_task5

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

Нужно правильно расставить в пропуски предложенные варианты
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even = input1S(input2S x: x input3S 2 == 0, input4S)
print(list(even))
filter
lambda
%
//
numbers
map
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Вычислите результат map с лямбдой

id: 40044_task6

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

Что должно получиться?
nums = [3, 1, 4, 1, 5]
doubled = list(map(lambda x: x * 2, nums))
print(doubled[0])
Сообщения
Проверить
Показать подсказку

Классифицируйте выражения

id: 40044_task7

Распределите код по категориям: какие выражения являются корректными лямбда-функциями, а какие содержат ошибки или вообще не являются лямбда-функциями.

Перетяните элементы в соответствующие блоки
Корректные лямбда-функции
Некорректные или не лямбда
lambda x: x + 1
lambda: 42
lambda x: print(x)
def f(x): return x
lambda x, y: x if x > y else y
lambda x: return x
Сообщения
Проверить
Показать подсказку

Соберите код сортировки с ключом

id: 40044_task8

Соберите код, который сортирует список словарей по ключу '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')
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Лямбда с условным выражением

id: 40044_task9

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

Выберите правильный вариант ответа
classify = lambda n: 'positive' if n > 0 else 'non-positive'
print(classify(-5))
Сообщения
Проверить
Показать подсказку

Немедленный вызов лямбда-функции (IIFE)

id: 40044_task10

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

Заполните пропуски
result = (input1S x: x ** input2S)(input3S)
print(result)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Порядок операций с reduce

id: 40044_task11

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

Расставьте строки в правильном порядке
print(product)
from functools import reduce
product = reduce(lambda x, y: x * y, numbers)
numbers = [2, 3, 4, 5]
Сообщения
Проверить
Показать подсказку

Цепочка map и filter

id: 40044_task12

Код сначала фильтрует числа больше 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()

id: 40044_task13

Код должен сортировать строки по их длине, но содержит ошибку. Найдите и исправьте строку с ошибкой.

Найдите ошибку и исправьте
words = ['apple', 'pie', 'extraordinary', 'cat']
sorted_words = sorted(words, key=lambda w: length(w))
print(sorted_words)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Лямбда с распаковкой кортежа

id: 40044_task14

Код сортирует список кортежей по второму элементу каждого кортежа. Определите, какой кортеж окажется первым после сортировки.

Выберите правильный вариант ответа
pairs = [(1, 'b'), (2, 'a'), (3, 'c')]
sorted_pairs = sorted(pairs, key=lambda item: item[1])
print(sorted_pairs[0])
Сообщения
Проверить
Показать подсказку

Соберите функцию-генератор лямбд

id: 40044_task15

Соберите код, который создаёт функцию-генератор множителей. Функция make_multiplier должна возвращать лямбда-функцию, умножающую на заданное число. Результат вызова make_multiplier(3)(5) должен быть 15.

Перетяните в правильном порядке строки из одного блока в другой
return lambda x: x * n
def make_multiplier(n):
print(triple(5))
triple = make_multiplier(3)
return x * n
def make_multiplier(x, n):
triple = lambda: make_multiplier(3)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру