Перейти к содержанию

Анонимная функция lambda

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

Синтаксис анонимной функции выглядит следующим образом:

lambda <аргумент1>[, <аргумент 2>, ...]: <выражение>

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

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

lambda x: x

Эквивалентный код записанный через def:

def func(x):
    return x

Задание 1: необычная сотировка


В списке items хранятся целые числа. Запишите в переменную srt отсортированный список items. В сортировке отрицательные числа должны учитываться, как положительные, уменьшенные вдвое.

Пример:

[10, -3,  0, -12, 4]  # [0, -3, 4, -12, 10]
Загрузка тренажера...

Подсказка: используйте тернарный оператор: <> if <> else <>


Задание 2: Перемножение элементов


В списках items и items2 хранятся целые числа. Списки имеют одинаковую длину. Запишите в переменную mul объект map, в который записан результат поэлементного умножения этих списков.

Пример:

[2, 3]
[100, 10]
# 200 30
Загрузка тренажера...

Задание3: Сумма доходов.


Используя lambda-функцию напишите функцию, которая будет принимать на вход список из сумм входящих/исходящих платежей и возвращать общую сумму входящих платежей.


  1. Реализуйте функцию с сигнатурой sum_income(list_payment), где list_payment список из положительных и отрицательных чисел.
  2. Функция должна вернуть сумму положительных чисел.
  3. Решение должно быть с применением lambda-функцию.
  4. Количество строк в коде не должно превышать 2х строк.

Загрузка тренажера...