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