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)>> 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>>> 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>>> |
>
>
Izvade:
The maximum element of the list is : 6>