Čo sú to funkcie Lambda a ako ich používať?



Naučte sa funkcie lambda jazyka Python spolu s rozdielom medzi normálnymi funkciami a funkciami lambda a o tom, ako ich možno použiť v parametroch filter (), map (), redukovať ().

Názov je konvencia, ktorá sa používa na označenie alebo oslovenie ľubovoľnej entity. Takmer všetko okolo nás má meno. Tomu zodpovedá aj svet programovania. Je však nevyhnutné vymenovať všetko? Alebo môžete mať niečo, čo je len ‚anonymné‘? Odpoveď je áno. ' poskytuje funkcie Lambda, známe tiež ako anonymné funkcie, ktoré sú v skutočnosti bezmenné. Poďme sa teda v nasledujúcej sekcii dozvedieť viac o týchto „anonymných záhadách“ Pythonu.

Tak poďme na to :)





Prečo používať funkcie Python Lambda?


Hlavný účel anonymných funkcií sa prejaví, keď potrebujete niektorú funkciu iba raz. Môžu byť vytvorené všade, kde sú potrebné. Z tohto dôvodu sú funkcie Python Lambda známe aj ako vyhoditeľné funkcie, ktoré sa používajú spolu s ďalšími preddefinovanými funkciami, ako sú filter (), mapa () atď. Tieto funkcie pomáhajú znižovať počet riadkov vášho kódu v porovnaní s normálne .

Aby sme to dokázali, poďme ďalej a naučme sa funkcie Python Lambda.



Čo sú funkcie Python Lambda?


Funkcie Python Lambda sú funkcie, ktoré nemajú žiadny názov. Sú tiež známe ako anonymné alebo bezmenné funkcie. Slovo „lambda“ nie je meno, ale je to kľúčové slovo. Toto kľúčové slovo určuje, že nasledujúca funkcia je anonymná.

Teraz, keď ste si vedomí toho, na čo tieto anonymné funkcie odkazujú, posuňme sa ďalej a pozrime sa, ako píšete tieto funkcie Python Lambda.

Ako písať lambda funkcie v Pythone?

Funkcia Lambda sa vytvára pomocou operátora lambda a jej syntax je nasledovná:



SYNTAX:

argumenty lambda: výraz

Python funkcia lambda môže mať ľubovoľný počet argumentov, ale stačí to jeden výraz. Vstupy alebo argumenty môžu začínať nulou a môžu ísť až po akýkoľvek limit. Rovnako ako všetky ostatné funkcie, je úplne v poriadku mať funkcie lambda bez vstupov. Preto môžete mať funkcie lambda v ktoromkoľvek z nasledujúcich formátov:

PRÍKLAD:

lambda: „Uveďte účel“

Funkcia lambda tu neprijíma žiadne argumenty.

PRÍKLAD:

lambda ajeden: „Uveďte použitie ajeden

Tu lambda prijíma jeden vstup, ktorý je ajeden.

čo robí split v jave

Podobne môžete mať lambda ajeden, do2, do3..ton.

Ukážme si niekoľko príkladov, ktoré to dokazujú:

PRÍKLAD 1:

a = lambda x: x * x tlač (a (3))

VÝKON: 9

PRÍKLAD 2:

a = tlač lambda x, y: x * y (a (3,7))

VÝKON: dvadsaťjeden

Ako vidíte, vzal som si tu dva príklady. Prvý príklad využíva funkciu lambda iba s jedným výrazom, zatiaľ čo v druhom príklade sú k nemu odovzdané dva argumenty. Upozorňujeme, že obe funkcie majú jeden výraz, za ktorým nasledujú argumenty. Funkcie lambda preto nemožno použiť tam, kde potrebujete výrazy s viacerými riadkami.

Na druhej strane, normálne funkcie pythonu môžu vo svojich definíciách funkcií brať ľubovoľný počet príkazov.

Ako anonymné funkcie zmenšujú veľkosť kódu?

Pred porovnaním požadovaného množstva kódu si najskôr zapíšeme jeho syntax a porovnajte ho s funkciami lambda opísanými vyššie.

Akákoľvek normálna funkcia v Pythone je definovaná pomocou a def kľúčové slovo takto:

SYNTAX:

def názov_funkcie (parametre):
Vyhlásenia)

Ako vidíte, množstvo kódu požadovaného pre funkciu lambda je o dosť menšie ako množstvo bežných funkcií.

Prepíšme teraz príklad, ktorý sme si vzali predtým pomocou bežných funkcií.

PRÍKLAD:

def my_func (x): návrat x * x print (my_func (3))

VÝKON: 9

previesť reťazec na dátum

Ako vidíte, vo vyššie uvedenom príklade potrebujeme návratový príkaz v rámci my_func na vyhodnotenie hodnoty štvorca 3. Naopak, funkcia lambda nevyužíva toto návratové vyhlásenie, ale telo anonymnej funkcie je napísaný v rovnakom riadku ako samotná funkcia, za symbolom dvojbodky. Preto je veľkosť funkcie menšia ako veľkosť my_func.

Funkcie lambda sa však vo vyššie uvedených príkladoch nazývajú pomocou iných a. Je to tak preto, lebo tieto funkcie sú bezmenné, a preto si vyžadujú pomenovanie. Táto skutočnosť sa ale môže javiť ako mätúca, prečo používať také bezmenné funkcie, keď potrebujete skutočne pomenovať nejaké iné meno? A samozrejme po priradení mena a k mojej funkcii už nezostane bezmenný! Správny?

Je to legitímna otázka, ale ide o to, že to nie je správny spôsob použitia týchto anonymných funkcií.

Anonymné funkcie sa najlepšie používajú v rámci iných funkcie vyššieho rádu ktoré využívajú niektorú funkciu ako argument, alebo vracajú funkciu ako výstup. Aby sme to demonštrovali, poďme teraz k našej ďalšej téme.

Funkcie Python Lambda v rámci funkcií definovaných používateľom:

Ako bolo uvedené vyššie, lambda funkcie sa používajú v rámci iných funkcií na označenie najlepšej výhody.

Nasledujúci príklad sa skladá z new_func, čo je normálna pythonovská funkcia, ktorá prijíma jeden argument x. Tento argument sa potom pridá k neznámemu argumentu y, ktorý sa dodáva prostredníctvom funkcie lambda.

PRÍKLAD:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

VÝKON:

6
5
Ako vidíte, vo vyššie uvedenom príklade sa funkcia lambda, ktorá je prítomná v rámci new_func, volá vždy, keď použijeme new_func (). Zakaždým môžeme argumentom odovzdať samostatné hodnoty.

Teraz, keď ste videli, ako používať anonymné funkcie vo funkciách vyššieho rádu, poďme teraz k pochopeniu jedného z jeho najpopulárnejších spôsobov použitia, ktoré sa nachádza v metódach filter (), map () a redukovať ().

Ako používať anonymné funkcie v rámci filtra (), mapy () a zmenšenia ():

Anonymné funkcie v rámci filter ():

filter ():

Metóda filter () sa používa na filtrovanie daných iterabilných súborov (zoznamov, množín atď.) Pomocou inej funkcie, ktorá sa odovzdáva ako argument, na testovanie všetkých prvkov, či sú pravdivé alebo nepravdivé.

Syntax tejto funkcie je:

SYNTAX:

filter (funkcia, opakovateľná)

Teraz zvážte nasledujúci príklad:

PRÍKLAD:

my_list = [2,3,4,5,6,7,8] new_list = list (filter (lambda a: (a / 3 == 2), my_list)) print (new_list)

VÝKON: [6]

My_list je zoznam opakovateľných hodnôt, ktoré sa odovzdávajú funkcii filtra. Táto funkcia používa funkciu lambda na kontrolu, či v zozname nie sú nejaké hodnoty, ktoré sa budú rovnať 2 po delení číslom 3. Výstup pozostáva zo zoznamu, ktorý spĺňa výraz prítomný v anonymnej funkcii.

mapa ():

Funkcia map () v Pythone je funkcia, ktorá aplikuje danú funkciu na všetky opakovateľné položky a vráti nový zoznam.

SYNTAX:

mapa (funkcia, iterovateľná)

Uveďme si príklad na ilustráciu použitia funkcií lambda vo funkcii map ():

PRÍKLAD:

my_list = [2,3,4,5,6,7,8] new_list = list (map (lambda a: (a / 3! = 2), li)) print (new_list)

VÝKON:

[Pravda, pravda, pravda, pravda, nepravda, pravda, pravda]

Vyššie uvedený výstup ukazuje, že kedykoľvek sa hodnota opakovateľných tabuliek nerovná 2 po delení tromi, výsledný výsledok by mal byť True. Preto pre všetky prvky v mojom zozname vráti hodnotu true, s výnimkou hodnoty 6, keď sa podmienka zmení na False.

znížiť ():

Funkcia redukovať () sa používa na použitie niektorých ďalších funkcií na zoznam prvkov, ktoré sa mu odovzdávajú ako parameter, a nakoniec vráti jednu hodnotu.

Syntax tejto funkcie je nasledovná:

SYNTAX:

redukovať (funkcia, postupnosť)

PRÍKLAD:

z functools import znížiť znížiť (lambda a, b: a + b, [23,21,45,98])

Vyššie uvedený príklad je znázornený na nasledujúcom obrázku:

redukovať-python, lambda-edureka

VÝKON: 187

Výstup jasne ukazuje, že všetky prvky zoznamu sú pridávané priebežne vrátiť konečný výsledok.

Týmto prichádzame na koniec tohto článku o „Python Lambda“. Dúfam, že máte jasno vo všetkom, čo bolo s vami zdieľané. Určite cvičte čo najviac a obráťte sa na svoje skúsenosti.

výukové programy pre Microsoft SQL pre začiatočníkov

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu „Python Lambda“ a my sa vám ozveme čo najskôr.

Ak chcete získať podrobné informácie o Pythone a jeho rôznych aplikáciách, môžete sa zaregistrovať naživo s nepretržitou podporou a doživotným prístupom.