Funkcie Python Lambda

Funkcie Python Lambda sú anonymné funkcie znamená, že funkcia je bez mena. Ako už vieme, def Kľúčové slovo sa používa na definovanie normálnej funkcie v Pythone. Podobne aj lambda kľúčové slovo sa používa na definovanie anonymnej funkcie v Python .

Syntax funkcie Python Lambda

Syntax: lambda argumenty : výraz

  • Táto funkcia môže mať ľubovoľný počet argumentov, ale iba jeden výraz, ktorý sa vyhodnotí a vráti.
  • Je možné voľne používať funkcie lambda všade tam, kde sú potrebné funkčné objekty.
  • Musíte si uvedomiť, že funkcie lambda sú syntakticky obmedzené na jeden výraz.
  • Okrem iných typov výrazov vo funkciách má rôzne využitie v jednotlivých oblastiach programovania.

Príklad funkcie Python Lambda

V príklade sme definovali funkciu lambda( horný ) na konverziu reťazca na veľké písmená pomocou horné () .

Tento kód definuje funkciu lambda s názvom upper> ktorý berie reťazec ako svoj argument a konvertuje ho na veľké písmená pomocou upper()> metóda. Potom použije túto funkciu lambda na reťazec ‚techcodeview.com‘ a vytlačí výsledok

Python3




str1> => 'techcodeview.com'> upper> => lambda> string: string.upper()> print> (upper(str1))>

Výkon:

GEEKSFORGEEKS 

Použitie funkcie Lambda v Pythone

Pozrime sa na niektoré praktické použitia funkcie lambda v Pythone.

Kontrola stavu pomocou funkcie lambda Pythonu

Tu, ‘format_numric’ volá funkciu lambda a číslo sa odovzdá ako parameter na vykonávanie operácií.

Python3




format_numeric> => lambda> num: f> '{num:e}'> if> isinstance> (num,> int> )> else> f> '{num:,.2f}'> print> (> 'Int formatting:'> , format_numeric(> 1000000> ))> print> (> 'float formatting:'> , format_numeric(> 999999.789541235> ))>

Výkon:

Int formatting: 1.000000e+06 float formatting: 999,999.79 

Rozdiel medzi funkciami lambda a definovanou funkciou

Kód definuje funkciu kocky pomocou oboch ' def'> kľúčové slovo a funkciu lambda. Vypočíta kocku daného čísla (v tomto prípade 5) pomocou oboch prístupov a vytlačí výsledky. Výstup je 125 pre obe ' def'> a lambda funkcie, čo dokazuje, že dosahujú rovnaký výpočet kocky.

Python3




def> cube(y):> > return> y> *> y> *> y> lambda_cube> => lambda> y: y> *> y> *> y> print> (> 'Using function defined with `def` keyword, cube:'> , cube(> 5> ))> print> (> 'Using lambda function, cube:'> , lambda_cube(> 5> ))>

Výkon:

Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125 

Ako môžeme vidieť vo vyššie uvedenom príklade, obe kocka() funkciu a lambda_cube() funkcia sa správa rovnako a ako bolo zamýšľané. Poďme analyzovať vyššie uvedený príklad trochu viac:

S funkciou lambda

Bez funkcie lambda

Niekedy podporuje jednoriadkové príkazy, ktoré vracajú nejakú hodnotu. Podporuje ľubovoľný počet riadkov vo funkčnom bloku
Dobré na vykonávanie krátkych operácií/manipulácií s údajmi. Dobré pre všetky prípady, ktoré vyžadujú viac riadkov kódu.
Používanie funkcie lambda môže niekedy znížiť čitateľnosť kódu. Pre ľahkú čitateľnosť môžeme použiť komentáre a popisy funkcií.

Praktické využitie funkcie lambda Pythonu

Funkcia Python Lambda s porozumením zoznamu

Pri každej iterácii vo vnútri porozumenie zoznamu , vytvárame novú funkciu lambda s predvoleným argumentom x (kde x je aktuálna položka v iterácii). Neskôr v rámci cyklu for voláme rovnaký funkčný objekt s predvoleným argumentom using položka() a získajte požadovanú hodnotu. teda is_even_list ukladá zoznam objektov funkcie lambda.

Python3




is_even_list> => [> lambda> arg> => x: arg> *> 10> for> x> in> range> (> 1> ,> 5> )]> for> item> in> is_even_list:> > print> (item())>

Výkon:

10 20 30 40 

Funkcia Python Lambda s if-else

Tu používame Max lambda funkcia na nájdenie maximálne dvoch celých čísel.

Python3




Max> => lambda> a, b : a> if> (a>b)> else> b> print> (> Max> (> 1> ,> 2> ))>

Výkon:

2 

Python Lambda s viacerými príkazmi

Funkcie lambda neumožňujú viacero príkazov, môžeme však vytvoriť dve funkcie lambda a potom zavolať druhú funkciu lambda ako parameter k prvej funkcii. Pokúsme sa nájsť druhý maximálny prvok pomocou lambda.

Kód definuje zoznam podzoznamov tzv ' List'> . Používa lambda funkcie na triedenie každého podzoznamu a nájdenie druhého najväčšieho prvku v každom podzozname. Výsledkom je zoznam druhých najväčších prvkov, ktorý sa potom vytlačí. Výstup zobrazuje druhý najväčší prvok z každého podzoznamu v pôvodnom zozname.

Python3




List> => [[> 2> ,> 3> ,> 4> ],[> 1> ,> 4> ,> 16> ,> 64> ],[> 3> ,> 6> ,> 9> ,> 12> ]]> sortList> => lambda> x: (> sorted> (i)> for> i> in> x)> secondLargest> => lambda> x, f : [y[> len> (y)> -> 2> ]> for> y> in> f(x)]> res> => secondLargest(> List> , sortList)> print> (res)>

Výkon:

[3, 16, 9] 

Funkcie lambda možno použiť spolu so vstavanými funkciami, ako sú filter() , mapa() a znížiť () .

Použitie funkcie lambda() s filtrom()

Funkcia filter() v Pythone berie funkciu a zoznam ako argumenty. Toto ponúka elegantný spôsob, ako odfiltrovať všetky prvky sekvencie, pre ktorú funkcia vráti hodnotu True. Tu je malý program, ktorý vracia nepárne čísla zo zoznamu vstupov:

Odfiltrujte všetky nepárne čísla pomocou funkcie filter() a lambda

Tu lambda x: (x % 2 != 0) vráti hodnotu True alebo False, ak x nie je párne. Keďže filter() uchováva prvky iba tam, kde ich produkuje Pravda , teda odstráni všetky nepárne čísla, ktoré sa vygenerovali Nepravdivé .

Python3




li> => [> 5> ,> 7> ,> 22> ,> 97> ,> 54> ,> 62> ,> 77> ,> 23> ,> 73> ,> 61> ]> final_list> => list> (> filter> (> lambda> x: (x> %> 2> !> => 0> ), li))> print> (final_list)>

Výkon:

[5, 7, 97, 77, 23, 73, 61] 

Filtrujte všetkých ľudí starších ako 18 rokov pomocou funkcie lambda a filter().

Kód filtruje zoznam vekových skupín a extrahuje vek dospelých (vek nad 18 rokov) pomocou funkcie lambda a ' filter'> funkciu. Potom vytlačí zoznam dospelého veku. Výstup zobrazuje vek jednotlivcov, ktorí majú 18 rokov alebo viac.

Python3




ages> => [> 13> ,> 90> ,> 17> ,> 59> ,> 21> ,> 60> ,> 5> ]> adults> => list> (> filter> (> lambda> age: age>> 18> , ages))> print> (adults)>

Výkon:

[90, 59, 21, 60] 

Použitie funkcie lambda() s map()

Funkcia map() v Pythone berie ako argument funkciu a zoznam. Funkcia sa volá s funkciou lambda a vráti sa zoznam a nový zoznam, ktorý obsahuje všetky položky upravené lambda vrátené touto funkciou pre každú položku. Príklad:

Vynásobte všetky prvky zoznamu 2 pomocou funkcie lambda a map().

Kód zdvojnásobí každý prvok v zozname pomocou funkcie lambda a ' map'> funkciu. Potom vytlačí nový zoznam so zdvojenými prvkami. Výstup zobrazuje každý prvok z pôvodného zoznamu vynásobený 2.

Python3




li> => [> 5> ,> 7> ,> 22> ,> 97> ,> 54> ,> 62> ,> 77> ,> 23> ,> 73> ,> 61> ]> final_list> => list> (> map> (> lambda> x: x> *> 2> , li))> print> (final_list)>

Výkon:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122] 

Transformujte všetky prvky zoznamu na veľké písmená pomocou funkcie lambda a map().

Kód prevádza zoznam mien zvierat na veľké písmená pomocou funkcie lambda a ' map'> funkciu. Potom vytlačí zoznam s menami zvierat veľkými písmenami. Výstup zobrazuje mená zvierat všetkými veľkými písmenami.

Python3




animals> => [> 'dog'> ,> 'cat'> ,> 'parrot'> ,> 'rabbit'> ]> uppered_animals> => list> (> map> (> lambda> animal: animal.upper(), animals))> print> (uppered_animals)>

Výkon:

['DOG', 'CAT', 'PARROT', 'RABBIT'] 

Použitie funkcie lambda() s redukciou()

The znížiť () funkcia v Pythone berie funkciu a zoznam ako argument. Funkcia sa volá s funkciou lambda a vráti sa iterovateľný a nový redukovaný výsledok. Toto vykoná opakovanú operáciu nad pármi iterovateľných. Funkcia reduction() patrí medzi functools modul.

Súčet všetkých prvkov v zozname pomocou funkcie lambda a reduction().

Kód vypočíta súčet prvkov v zozname pomocou ' reduce'> funkcia z ' functools'> modul. Dováža sa ' reduce'> , definuje zoznam, aplikuje funkciu lambda, ktorá pridáva dva prvky naraz, a vytlačí súčet všetkých prvkov v zozname. Výstup zobrazuje vypočítaný súčet.

Python3




from> functools> import> reduce> li> => [> 5> ,> 8> ,> 10> ,> 20> ,> 50> ,> 100> ]> sum> => reduce> ((> lambda> x, y: x> +> y), li)> print> (> sum> )>

Výkon:

193 

Tu sa výsledky predchádzajúcich dvoch prvkov pridajú k ďalšiemu prvku a to pokračuje až do konca zoznamu ako (((((5+8)+10)+20)+50)+100).

Nájdite maximálny prvok v zozname pomocou funkcie lambda a reduction().

Kód používa ' functools'> modul na nájdenie maximálneho počtu prvkov v zozname ( ' lis'> ) zamestnaním ' reduce'> funkciu a funkciu lambda. Potom vytlačí maximálny prvok, ktorý je v tomto prípade 6.

Python3




import> functools> lis> => [> 1> ,> 3> ,> 5> ,> 6> ,> 2> , ]> print> (> 'The maximum element of the list is : '> , end> => '')> print> (functools.> reduce> (> lambda> a, b: a> if> a>b> else> b, lis))>

Výkon:

The maximum element of the list is : 6