Lambda

Odpowiedz Nowy wątek
2019-09-11 13:36
0

Witam. Mam pewien problem ze zrozumieniem tego wyrażenia. Dokładniej chodzi mi o lambdę, co ona tu robi, jak się zachowuje itp. W internecie przeczytałem że to działa jak funkcja. Ale tego wyrażenia totalnie nie rozumiem.

reduce(lambda x, f: f(x), [lambda x: 2 * x, lambda x: x + 3], 3)

Pozostało 580 znaków

2019-09-11 13:49

bez lambdy musiałbyś napisać:

def accumulator(x, f):
    return f(x)

def f1(x):
    return 2 * x

def f2(x):
    return x + 3

reduce(accumulator, [f1, f2], 3)

Wybrałeś sobie bardzo nieszczęśliwy przykład na zrozumienie lambd.

Siła lambd demonstruje się w momencie kiedy lambda łapie jeszcze jakąś zmienną. Wówczas jako równoważnik nie można napisać po prostu funkcji (jak wyżej).
Przykład

q = jakasFunkcjaZwracajacaInt();
reduce(lambda x, f: f(x), [lambda x: q * x, lambda x: x + q], 3)

Żeby pozbyć się lambd w tym przykładzie to trzeba napisać już sporo kodu (nie jestem biegły w python, wiec nie pokażę jak).


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 6x, ostatnio: MarekR22, 2019-09-11 16:50
masz dwa razy f1 zamiast f2 - Kamil Żabiński 2019-09-11 13:52

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0