logo

Python Lambda funkcijas

Python Lambda funkcijas ir anonīmas funkcijas nozīmē, ka funkcijai nav nosaukuma. Kā mēs jau zinām, def atslēgvārds tiek izmantots, lai Python definētu normālu funkciju. Līdzīgi, lambda atslēgvārds tiek izmantots, lai definētu anonīmu funkciju Python .

Python Lambda funkcijas sintakse

Sintakse: lambda argumenti: izteiksme



  • Šai funkcijai var būt jebkurš argumentu skaits, bet tikai viena izteiksme, kas tiek novērtēta un atgriezta.
  • Var brīvi izmantot lambda funkcijas visur, kur ir nepieciešami funkciju objekti.
  • Jums jāzina, ka lambda funkcijas sintaktiski ir ierobežotas ar vienu izteiksmi.
  • Tam ir dažādi lietojumi noteiktās programmēšanas jomās, kā arī cita veida izteiksmes funkcijās.

Python Lambda funkcijas piemērs

Piemērā mēs definējām lambda funkciju ( augšējais ), lai pārvērstu virkni par tās lielo burtu, izmantojot augšējais () .

Šis kods definē lambda funkciju ar nosaukumu upper> kas izmanto virkni kā argumentu un pārvērš to par lielajiem burtiem, izmantojot upper()> metodi. Pēc tam tā piemēro šo lambda funkciju virknei “techcodeview.com” un izdrukā rezultātu

Python3








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

>

>

Izvade:

GEEKSFORGEEKS>

Lambda funkcijas izmantošana Python

Apskatīsim dažus Python lambda funkcijas praktiskos lietojumus.

Stāvokļa pārbaude, izmantojot Python lambda funkciju

Lūk, 'format_numric' izsauc lambda funkciju, un cipars tiek nodots kā parametrs darbību veikšanai.

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

>

>

Izvade:

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

Atšķirība starp Lambda funkcijām un def definētu funkciju

Kods definē kuba funkciju, izmantojot gan ' def'> atslēgvārdu un lambda funkciju. Tas aprēķina dotā skaitļa (šajā gadījumā 5) kubu, izmantojot abas pieejas, un izdrukā rezultātus. Izvade ir 125 abiem ' def'> un lambda funkcijas, parādot, ka tās sasniedz vienu un to pašu kuba aprēķinu.

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

>

>

Izvade:

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

Kā redzams iepriekš minētajā piemērā, gan kubs () funkcija un lambda_kubs() funkcija darbojas tāpat un kā paredzēts. Analizēsim iepriekš minēto piemēru nedaudz vairāk:

Ar lambda funkciju

Bez lambda funkcijas

Dažkārt atbalsta vienas rindiņas paziņojumus, kas atgriež kādu vērtību. Atbalsta jebkuru rindu skaitu funkciju blokā
Piemērots īsu operāciju/datu manipulāciju veikšanai. Piemērots visiem gadījumiem, kad nepieciešamas vairākas koda rindiņas.
Lambda funkcijas izmantošana dažkārt var samazināt koda lasāmību. Ērtai lasīšanai varam izmantot komentārus un funkciju aprakstus.

Python lambda funkcijas praktiskie lietojumi

Python Lambda funkcija ar saraksta izpratni

Katrā iterācijā iekšpusē saraksta izpratne , mēs izveidojam jaunu lambda funkciju ar noklusējuma argumentu x (kur x ir iterācijas pašreizējais vienums). Vēlāk for cilpas ietvaros mēs izsaucam to pašu funkcijas objektu, kam ir noklusējuma arguments, izmantojot lieta() un iegūstiet vēlamo vērtību. Tādējādi ir_pāra_saraksts saglabā lambda funkciju objektu sarakstu.

Python3




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

>

>

Izvade:

10 20 30 40>

Python Lambda funkcija ar if-else

Šeit mēs izmantojam Maks lambda funkcija, lai atrastu maksimālo divus veselus skaitļus.

Python3




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

>

>

Izvade:

2>

Python Lambda ar vairākiem paziņojumiem

Lambda funkcijas nepieļauj vairākus priekšrakstus, tomēr mēs varam izveidot divas lambda funkcijas un pēc tam izsaukt otru lambda funkciju kā parametru pirmajai funkcijai. Mēģināsim atrast otro maksimālo elementu, izmantojot lambda.

Kods definē izsaukto apakšsarakstu sarakstu ' List'> . Tas izmanto lambda funkcijas, lai kārtotu katru apakšsarakstu un atrastu otro lielāko elementu katrā apakšsarakstā. Rezultāts ir otro lielāko elementu saraksts, kas pēc tam tiek izdrukāts. Izvadē tiek parādīts otrais lielākais elements no katra sākotnējā saraksta apakšsaraksta.

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

>

>

Izvade:

[3, 16, 9]>

Lambda funkcijas var izmantot kopā ar iebūvētām funkcijām, piemēram filtrs () , karte () un samazināt () .

Izmantojot funkciju lambda () ar filtru ()

Funkcija filtrs() Python izmanto funkciju un sarakstu kā argumentus. Tas piedāvā elegantu veidu, kā filtrēt visus secības secības elementus, kuriem funkcija atgriež True. Šeit ir neliela programma, kas atgriež nepāra skaitļus no ievades saraksta:

Filtrējiet visus nepāra skaitļus, izmantojot filtru () un lambda funkciju

Šeit lambda x: (x % 2 != 0) atgriež True vai False, ja x nav pat. Tā kā filtrs() saglabā elementus tikai tur, kur tas rada Taisnība , tādējādi tiek noņemti visi ģenerētie nepāra skaitļi Nepatiesi .

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

>

>

Izvade:

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

Filtrējiet visus cilvēkus, kuri ir vecāki par 18 gadiem, izmantojot lambda un filtra() funkciju

Kods filtrē vecumu sarakstu un izvelk pieaugušo vecumu (vecumā virs 18), izmantojot lambda funkciju un ' filter'> funkciju. Pēc tam tiek izdrukāts pieaugušo vecuma saraksts. Izvadā tiek parādīts to personu vecums, kuras ir sasniegušas 18 gadus vai vecākus.

Python3




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

Salman Khan vecums
>

>

Izvade:

[90, 59, 21, 60]>

Funkcijas lambda() izmantošana ar map()

Python funkcija map() izmanto funkciju un sarakstu kā argumentu. Funkcija tiek izsaukta ar lambda funkciju un sarakstu, un tiek atgriezts jauns saraksts, kurā ir visi šīs funkcijas atgrieztie lambda modificētie vienumi katram vienumam. Piemērs:

Reiziniet visus saraksta elementus ar 2, izmantojot lambda un map() funkciju

Kods dubulto katru elementu sarakstā, izmantojot lambda funkciju un ' map'> funkciju. Pēc tam tas izdrukā jauno sarakstu ar dubultotajiem elementiem. Izvade parāda katru elementu no sākotnējā saraksta, kas reizināts ar 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)>

>

>

Izvade:

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

Pārveidojiet visus saraksta elementus uz lielajiem burtiem, izmantojot lambda un map() funkciju

Kods pārvērš dzīvnieku nosaukumu sarakstu ar lielajiem burtiem, izmantojot lambda funkciju un ' map'> funkciju. Pēc tam tiek izdrukāts saraksts ar dzīvnieku nosaukumiem ar lielajiem burtiem. Izvadā tiek parādīti dzīvnieku nosaukumi ar visiem lielajiem burtiem.

Python3




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

>

>

Izvade:

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

Izmantojot funkciju lambda () ar redukcijas ()

The samazināt () funkcija Python izmanto funkciju un sarakstu kā argumentu. Funkcija tiek izsaukta ar lambda funkciju un iterējamu, un tiek atgriezts jauns samazināts rezultāts. Tas veic atkārtotu darbību pāri iterējamam. Funkcija samazināt () pieder pie funkcionālie rīki modulis.

Visu elementu summa sarakstā, izmantojot lambda un redukcijas () funkcijas

Kods aprēķina elementu summu sarakstā, izmantojot ' reduce'> funkcija no ' functools'> modulis. Tas importē ' reduce'> , definē sarakstu, lieto lambda funkciju, kas vienlaikus pievieno divus elementus, un izdrukā visu saraksta elementu summu. Izvade parāda aprēķināto summu.

Python3




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

>

>

Izvade:

193>

Šeit iepriekšējo divu elementu rezultāti tiek pievienoti nākamajam elementam, un tas turpinās līdz saraksta beigām, piemēram ((((5+8)+10)+20)+50)+100).

Atrodiet maksimālo elementu sarakstā, izmantojot lambda un samazināt () funkciju

Kods izmanto ' functools'> moduli, lai atrastu maksimālo elementu sarakstā ( ' lis'> ), izmantojot ' reduce'> funkcija un lambda funkcija. Pēc tam tas izdrukā maksimālo elementu, kas šajā gadījumā ir 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>>>b, lis))>

>

>

Izvade:

The maximum element of the list is : 6>