🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
1 2 3 4 5 6 7 8 9 10
even
0
2
4
6
8
10
Lambda-функции в Python, также известные как анонимные функции, — это небольшие, как правило, одноразовые функции, которые определяются с помощью ключевого слова lambda. Их ключевая особенность в том, что они могут содержать только одно выражение и не имеют собственного имени, что делает их идеальным инструментом для задач, где полновесное определение функции через def было бы избыточным. Lambda-функции часто используются для создания коротких функций "на лету", например, в качестве аргументов для других, более высокоуровневых функций.
def. Они являются объектами-функциями, которые можно присвоить переменной, но это не является их основной целью.return. Это их главное ограничение — в лямбдах нельзя разместить несколько команд, циклы или сложные условные конструкции.Синтаксис lambda-функции прост и элегантен:
lambda аргументы: выражение
lambda — ключевое слово.аргументы — один или несколько аргументов, перечисленных через запятую (так же, как в обычной функции).: — двоеточие, отделяющее аргументы от выражения.выражение — одно выражение, результат которого будет возвращен.1. Простейшая lambda-функция
Хотя lambda-функции можно присваивать переменным, это часто считается не лучшей практикой. Если функции нужно имя, лучше использовать def. Тем не менее, для демонстрации это полезно.
Создание lambda-функции, которая возвращает квадрат числа:
квадрат = lambda x: x ** 2
print(квадрат(5)) # Вывод: 25
Полезный совет: Инструменты проверки кода (линтеры) часто помечают такое присваивание как антипаттерн. Если вы хотите дать функции имя для многократного использования, предпочтительнее стандартное определение:
def квадрат(x):
return x ** 2
2. Lambda-функция с несколькими аргументами
Создание lambda-функции, которая складывает два числа:
сумма = lambda a, b: a + b
print(сумма(3, 4)) # Вывод: 7
3. Использование lambda-функций с встроенными функциями
Вот где lambda-функции действительно раскрывают свой потенциал. Они идеально подходят для передачи в качестве аргумента функциям map(), filter(), sorted() и другим.
Использование с map()
Функция map() применяет указанную функцию к каждому элементу итерируемого объекта и возвращает итератор с результатами.
числа = [1, 2, 3, 4, 5]
квадраты = list(map(lambda x: x ** 2, числа))
print(квадраты) # Вывод: [1, 4, 9, 16, 25]
Полезный совет: Для простых операций, как в этом примере, более "питоничным" (Pythonic) и часто более читаемым способом являются списковые включения (list comprehensions):
квадраты_alt = [x ** 2 for x in числа]
print(квадраты_alt) # Вывод: [1, 4, 9, 16, 25]
Использование с filter()
Функция filter() возвращает итератор, состоящий только из тех элементов, для которых переданная функция вернула True.
числа = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
четные = list(filter(lambda x: x % 2 == 0, числа))
print(четные) # Вывод: [2, 4, 6, 8, 10]
Полезный совет: Здесь также списковое включение с условием будет отличной альтернативой:
четные_alt = [x for x in числа if x % 2 == 0]
print(четные_alt) # Вывод: [2, 4, 6, 8, 10]
Использование с sorted()
Функция sorted() возвращает новый отсортированный список. Lambda-функции здесь незаменимы для указания сложного ключа сортировки без необходимости определять отдельную функцию.
студенты = [("Алиса", 25), ("Боб", 22), ("Чарли", 23)]
# Сортируем список кортежей по второму элементу (возрасту)
отсортированные_студенты = sorted(студенты, key=lambda x: x[1])
print(отсортированные_студенты)
# Вывод: [('Боб', 22), ('Чарли', 23), ('Алиса', 25)]
Полезный совет: Это один из лучших примеров использования lambda. Создавать отдельную функцию def get_age(student): return student[1] только для этой одной сортировки было бы излишне.
4. Lambda-функции внутри других функций (Замыкания)
Lambda-функции могут быть возвращены из других функций. Это мощный прием, называемый замыканием (closure), где внутренняя функция "запоминает" контекст, в котором она была создана.
def умножение(n):
# Эта функция возвращает другую функцию (лямбду)
return lambda x: x * n
# Создаем функции на основе "фабрики" умножения
умножение_на_2 = умножение(2) # Здесь n=2 "запомнилось"
умножение_на_3 = умножение(3) # Здесь n=3 "запомнилось"
print(умножение_на_2(5)) # Вывод: 10
print(умножение_на_3(5)) # Вывод: 15
В этом примере lambda x: x * n "захватывает" значение переменной n из внешней функции умножение и сохраняет его для последующих вызовов.
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...