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>