← Назад к вопросам

Для каких задач лучше использовать Lambda функцию

1.0 Junior🔥 241 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Lambda функции в Python

Lambda функции — это анонимные функции малого объёма, которые вычисляют и возвращают одно значение. Определяются синтаксисом lambda аргументы: выражение.

Основные задачи для Lambda

1. Аргументы к функциям высшего порядка

Это главное применение lambda. Используются как колбэки в map(), filter(), sorted():

# map() — преобразование списка
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))  # [1, 4, 9, 16, 25]

# filter() — фильтрация
evens = list(filter(lambda x: x % 2 == 0, numbers))  # [2, 4]

# sorted() с кастомным ключом
students = [("Alice", 25), ("Bob", 20), ("Charlie", 23)]
sorted_by_age = sorted(students, key=lambda x: x[1])  # сортировка по возрасту

2. Сортировка и группировка по сложным ключам

products = [
    {"name": "Laptop", "price": 1000, "stock": 5},
    {"name": "Mouse", "price": 25, "stock": 100}
]

# Сортировка по нескольким параметрам
sorted_products = sorted(products, 
                         key=lambda p: (-p["stock"], p["price"]))

3. Использование в словарях и операциях с данными

from functools import reduce

# reduce() для сворачивания списка
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)  # 120

# Dictionary comprehension с условием
data = {"a": 1, "b": 2, "c": 3}
filtered = {k: v for k, v in filter(lambda item: item[1] > 1, data.items())}

Когда НЕ использовать Lambda

  • Сложная логика — если функция содержит много строк кода, используй def
  • Множественные выражения — lambda поддерживает только одно выражение
  • Код для переиспользования — назови функцию и определи через def
  • Отладка — в stack trace lambda покажется как <lambda>, что затруднит отладку
# ❌ Плохо — сложно читать и отлаживать
result = list(map(lambda x: x ** 2 if x % 2 == 0 else x * 3, numbers))

# ✅ Хорошо — понятная функция
def transform(x):
    if x % 2 == 0:
        return x ** 2
    return x * 3

result = list(map(transform, numbers))

Производительность

Lambda работает так же быстро, как обычная функция. Различия в производительности незначительны, поэтому выбор основан на читаемости кода.

Правило большого пальца

Используй lambda, если:

  • Функция — это один простой выражение
  • Используется один раз как аргумент другой функции
  • Код остаётся читаемым

Используй def, если:

  • Функция сложнее одной строки
  • Функция используется в нескольких местах
  • Нужна отладка по имени функции
Для каких задач лучше использовать Lambda функцию | PrepBro