logo

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)>

javafx tutoriál
>

>

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>