Рубрики
Без рубрики

Python: Плюсы и минусы лямбды

Рисунок 1: Фото Z S на основе unsplash для лямбды лямбда – это ключевое слово в Python, мы … Tagged с Python.

Рисунок 1: Фото Z S на Unsplash

Основы для Lambda

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

Но каковы анонимные функции?

Нормальная функция определена так:

def sum_two(x, y):
    x + y

print(sum_two)
print(type(sum_two))

#
#

Из результата, sum_two это имя определенной функции, его тип – «функция».

По сравнению с нормальной функцией, анонимная функция является функцией без имени:

print(lambda x, y: x + y)
print(type(lambda x, y: x + y))

# at 0x108227f50>
#

Преимущества лямбды

Но почему мы хотим функции без имени?

Потому что Наименование слишком чертовски сложнее ! Подумайте о том, сколько времени вы потратили на название (переменные, функции, классы), когда вы программируете.

На самом деле, не все функции заслужили имя.

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

Предположим, нам нужно добавить 2 к каждому элементу в списке, вместо того, чтобы использовать нормальную функцию:

def add_2(x):
    return x + 2

lst = [3,5,-4,-1,0,-2,-6]
map(add_2, lst)

Мы могли бы использовать Lambda Чтобы закончить одни и те же вычисления в одной строке:

map(lambda x: x +2, lst)

Это простота. Мы можем написать функцию лямбды без хлопот.

Есть и другие функции, такие как фильтр , уменьшить , отсортировано , они получают функцию лямбды в качестве параметров.

Ловушка лямбды

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

Простое правило: Не используйте Lambda для функций, длина которых составляет более одной строки Анкет

Подумайте об этом фрагменте кода, не могли бы вы легко понять этот код?

f = lambda x: [[y for j, y in enumerate(set(x)) if (i >> j) & 1] for i in range(2**len(set(x)))]

Очевидно, этот код трудно понять. Намерение этого кода – получить все подмножества из установить Анкет

a = {1, 2, 3}
print(f(a))
# [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]

В этом случае мы должны использовать нормальную функцию с правильным именем:

def powerset(s):
    N = len(s)
    result = []
    for i in range(2 ** N):
        combo = []
        for j, y in enumerate(s):
            if (i >> j) % 2 == 1:
                combo.append(y)
        result.append(combo)
    return result

print(powerset(a))

Пост Python: Плюсы и минусы лямбды появился первым на Кошка кодера Анкет

Оригинал: “https://dev.to/snj/python-pros-and-cons-of-lambda-5cj1”