logo

Python Lambda-functies

Python Lambda-functies zijn anonieme functies betekent dat de functie geen naam heeft. Zoals we al weten zeker trefwoord wordt gebruikt om een ​​normale functie in Python te definiëren. Op dezelfde manier is de lambda trefwoord wordt gebruikt om een ​​anonieme functie in te definiëren Python .

Python Lambda-functiesyntaxis

Syntaxis: lambda-argumenten: expressie



  • Deze functie kan een willekeurig aantal argumenten hebben, maar slechts één expressie, die wordt geëvalueerd en geretourneerd.
  • Het staat u vrij om lambda-functies te gebruiken waar functieobjecten nodig zijn.
  • U moet er rekening mee houden dat lambda-functies syntactisch beperkt zijn tot één enkele expressie.
  • Het heeft verschillende toepassingen op bepaalde programmeergebieden, naast andere soorten expressies in functies.

Voorbeeld van Python Lambda-functie

In het voorbeeld hebben we een lambda-functie( bovenste ) om een ​​tekenreeks naar hoofdletters te converteren met behulp van bovenste() .

Deze code definieert een lambda-functie met de naam upper> dat een string als argument neemt en deze naar hoofdletters converteert met behulp van de upper()> methode. Vervolgens past het deze lambda-functie toe op de string ‘techcodeview.com’ en drukt het resultaat af

Python3








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

>

>

Uitgang:

GEEKSFORGEEKS>

Gebruik van de Lambda-functie in Python

Laten we enkele praktische toepassingen van de Python-lambda-functie bekijken.

Conditiecontrole met behulp van de Python-lambda-functie

Hier de ‘format_numrisch’ roept de lambda-functie aan en het num wordt doorgegeven als parameter om bewerkingen uit te voeren.

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

>

>

Uitgang:

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

Verschil tussen Lambda-functies en gedefinieerde functie

De code definieert een kubusfunctie met behulp van zowel de ' def'> trefwoord en een lambdafunctie. Het berekent de derde macht van een bepaald getal (in dit geval 5) met behulp van beide benaderingen en drukt de resultaten af. De uitvoer is 125 voor beide ' def'> en lambda-functies, wat aantoont dat ze dezelfde kubusberekening opleveren.

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

>

>

Uitgang:

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

Zoals we in het bovenstaande voorbeeld kunnen zien, zijn zowel de kubus() functie en lambda_cube() functie gedragen zich hetzelfde en zoals bedoeld. Laten we het bovenstaande voorbeeld wat meer analyseren:

Met lambdafunctie

Zonder lambdafunctie

Ondersteunt soms enkelregelige instructies die een bepaalde waarde retourneren. Ondersteunt een willekeurig aantal regels binnen een functieblok
Goed voor het uitvoeren van korte bewerkingen/gegevensmanipulaties. Goed voor alle gevallen waarin meerdere regels code nodig zijn.
Het gebruik van de lambda-functie kan soms de leesbaarheid van code verminderen. Voor een gemakkelijke leesbaarheid kunnen wij opmerkingen en functiebeschrijvingen gebruiken.

Praktisch gebruik van de Python-lambdafunctie

Python Lambda-functie met lijstbegrip

Bij elke iteratie binnen de lijst begrip , maken we een nieuwe lambda-functie met het standaardargument x (waarbij x het huidige item in de iteratie is). Later, binnen de for-lus, roepen we hetzelfde functieobject aan met het standaardargument met behulp van item() en verkrijg de gewenste waarde. Dus, is_even_lijst slaat de lijst met lambda-functieobjecten op.

Python3




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

>

>

Uitgang:

10 20 30 40>

Python Lambda-functie met if-else

Hier gebruiken we de Max lambda-functie om het maximum van twee gehele getallen te vinden.

Python3




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

>

>

Uitgang:

2>

Python Lambda met meerdere uitspraken

Lambda-functies staan ​​geen meerdere instructies toe, maar we kunnen wel twee lambda-functies maken en vervolgens de andere lambda-functie aanroepen als parameter voor de eerste functie. Laten we proberen het tweede maximale element te vinden met behulp van lambda.

De code definieert een lijst met opgeroepen sublijsten ' List'> . Het gebruikt lambda-functies om elke sublijst te sorteren en het op een na grootste element in elke sublijst te vinden. Het resultaat is een lijst met de op een na grootste elementen, die vervolgens wordt afgedrukt. De uitvoer toont het op een na grootste element uit elke sublijst in de oorspronkelijke lijst.

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

>

>

Uitgang:

[3, 16, 9]>

Lambda-functies kunnen worden gebruikt in combinatie met ingebouwde functies zoals filter() , kaart() En verminderen() .

Lambda()-functie gebruiken met filter()

De functie filter() in Python gebruikt een functie en een lijst als argumenten. Dit biedt een elegante manier om alle elementen van een reeksreeks eruit te filteren, waarvoor de functie True retourneert. Hier is een klein programma dat de oneven getallen uit een invoerlijst retourneert:

Filter alle oneven getallen uit met behulp van filter() en de lambda-functie

Hier retourneert lambda x: (x % 2 != 0) Waar of Onwaar als x niet even is. Omdat filter() alleen elementen vasthoudt waar het produceert WAAR , waardoor alle oneven getallen worden verwijderd die zijn gegenereerd Vals .

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

>

>

Uitgang:

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

Filter alle mensen die ouder zijn dan 18 jaar, met behulp van de lambda- en filter()-functie

De code filtert een lijst met leeftijden en extraheert de leeftijden van volwassenen (leeftijden ouder dan 18 jaar) met behulp van een lambda-functie en de ' filter'> functie. Vervolgens wordt de lijst met volwassen leeftijden afgedrukt. In de uitvoer worden de leeftijden weergegeven van personen die 18 jaar of ouder zijn.

Python3




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

een array van objecten java
>

>

Uitgang:

[90, 59, 21, 60]>

Lambda()-functie gebruiken met map()

De functie map() in Python gebruikt een functie en een lijst als argument. De functie wordt aangeroepen met een lambda-functie en een lijst, en er wordt een nieuwe lijst geretourneerd die alle door lambda gewijzigde items bevat die door die functie voor elk item worden geretourneerd. Voorbeeld:

Vermenigvuldig alle elementen van een lijst met 2 met behulp van de lambda- en map()-functie

De code verdubbelt elk element in een lijst met behulp van een lambda-functie en de ' map'> functie. Vervolgens wordt de nieuwe lijst met de dubbele elementen afgedrukt. De uitvoer toont elk element uit de oorspronkelijke lijst, vermenigvuldigd met 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)>

>

>

Uitgang:

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

Transformeer alle elementen van een lijst naar hoofdletters met behulp van de lambda- en map()-functie

De code converteert een lijst met dierennamen naar hoofdletters met behulp van een lambda-functie en de ' map'> functie. Vervolgens wordt de lijst afgedrukt met de dierennamen in hoofdletters. De uitvoer toont de dierennamen in hoofdletters.

Python3




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

>

>

Uitgang:

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

De lambda()-functie gebruiken met reduce()

De verminderen() functie in Python neemt een functie en een lijst als argument op. De functie wordt aangeroepen met een lambda-functie en er wordt een iterabel en een nieuw gereduceerd resultaat geretourneerd. Dit voert een repetitieve bewerking uit over de paren van de iterabele. De functie reduce() behoort tot de functionele hulpmiddelen module.

Een som van alle elementen in een lijst met behulp van de functie lambda en reduce().

De code berekent de som van de elementen in een lijst met behulp van de ' reduce'> functie uit de ' functools'> module. Het importeert ' reduce'> , definieert een lijst, past een lambda-functie toe die twee elementen tegelijk toevoegt, en drukt de som van alle elementen in de lijst af. De uitvoer geeft de berekende som weer.

Python3




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

>

>

Uitgang:

193>

Hier worden de resultaten van de vorige twee elementen toegevoegd aan het volgende element en dit gaat door tot het einde van de lijst, zoals (((((5+8)+10)+20)+50)+100).

Zoek het maximale element in een lijst met behulp van de lambda- en reduce()-functie

De code maakt gebruik van de ' functools'> module om het maximale element in een lijst te vinden ( ' lis'> ) door gebruik te maken van de ' reduce'> functie en een lambdafunctie. Vervolgens wordt het maximale element afgedrukt, in dit geval 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))>

>

>

Uitgang:

The maximum element of the list is : 6>