logo

Python Lambda -funktiot

Python Lambda -funktiot ovat anonyymejä funktioita tarkoittaa, että funktiolla ei ole nimeä. Kuten jo tiedämme def avainsanaa käytetään normaalin funktion määrittämiseen Pythonissa. Samoin, lambda avainsanaa käytetään määrittämään anonyymi toiminto Python .

Python Lambda -funktion syntaksi

Syntaksi: lambda-argumentit: lauseke



  • Tällä funktiolla voi olla mikä tahansa määrä argumentteja, mutta vain yksi lauseke, joka arvioidaan ja palautetaan.
  • Lambda-funktioita voi käyttää vapaasti missä tahansa funktioobjekteja tarvitaan.
  • Sinun on pidettävä tietosi siitä, että lambda-funktiot on syntaktisesti rajoitettu yhteen lausekkeeseen.
  • Sillä on erilaisia ​​käyttötarkoituksia tietyillä ohjelmoinnin aloilla muiden funktioiden lausekkeiden lisäksi.

Python Lambda -funktioesimerkki

Esimerkissä määritimme lambda-funktion( ylempi ) muuntaaksesi merkkijonon sen isoiksi kirjaimille käyttämällä ylempi () .

Tämä koodi määrittelee lambda-funktion nimeltä upper> joka ottaa argumentiksi merkkijonon ja muuntaa sen isoiksi käyttämällä upper()> menetelmä. Se soveltaa sitten tätä lambda-funktiota merkkijonoon 'techcodeview.com' ja tulostaa tuloksen

Python 3








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

>

>

Lähtö:

GEEKSFORGEEKS>

Lambda-funktion käyttö Pythonissa

Katsotaanpa joitain Python lambda -funktion käytännön käyttötapoja.

Kuntotarkistus Python lambda -toiminnolla

Tässä, 'format_numric' kutsuu lambda-funktiota, ja num välitetään parametrina toimintojen suorittamista varten.

Python 3




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

>

>

Lähtö:

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

Lambda-funktioiden ja määritellyn funktion välinen ero

Koodi määrittää kuutiofunktion käyttämällä molempia ' def'> avainsana ja lambda-funktio. Se laskee tietyn luvun (tässä tapauksessa 5) kuution molemmilla lähestymistavoilla ja tulostaa tulokset. Lähtö on 125 molemmille ' def'> ja lambda-funktiot, jotka osoittavat, että ne saavuttavat saman kuutiolaskelman.

Python 3




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

>

>

Lähtö:

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

Kuten yllä olevassa esimerkissä näemme, molemmat kuutio() toiminto ja lambda_kuutio() toiminto käyttäytyy samalla tavalla ja tarkoitetulla tavalla. Analysoidaanpa hieman tarkemmin yllä olevaa esimerkkiä:

Lambda-toiminnolla

Ilman lambda-toimintoa

Tukee joskus yksirivisiä lauseita, jotka palauttavat jonkin arvon. Tukee mitä tahansa riviä toimintolohkon sisällä
Sopii lyhyiden toimintojen/tietojen käsittelyyn. Sopii kaikkiin tapauksiin, joissa tarvitaan useita koodirivejä.
Lambda-funktion käyttö voi joskus heikentää koodin luettavuutta. Voimme käyttää kommentteja ja toimintokuvauksia helppolukuisuuden vuoksi.

Python lambda -funktion käytännön käytöt

Python Lambda -funktio luettelon ymmärtämisellä

Jokaisessa iteraatiossa sisällä listan ymmärtäminen , luomme uuden lambda-funktion oletusargumentilla x (jossa x on iteraation nykyinen kohde). Myöhemmin for-silmukan sisällä kutsumme samaa funktioobjektia, jolla on oletusargumentti käyttäen tuote() ja saada haluttu arvo. Täten, is_even_list tallentaa luettelon lambda-funktioobjekteista.

Python 3




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

>

>

Lähtö:

10 20 30 40>

Python Lambda -funktio if-elsen kanssa

Tässä käytämme Max lambda-funktiolla kahden kokonaisluvun enimmäismäärän löytämiseksi.

Python 3




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

>

>

Lähtö:

2>

Python Lambda, jossa on useita lauseita

Lambda-funktiot eivät salli useita lausekkeita, mutta voimme kuitenkin luoda kaksi lambda-funktiota ja kutsua sitten toisen lambda-funktion parametriksi ensimmäiselle funktiolle. Yritetään löytää toinen maksimielementti lambdalla.

Koodi määrittää luettelon aliluetteloista, joita kutsutaan ' List'> . Se käyttää lambda-funktioita lajitellakseen jokaisen aliluettelon ja löytääkseen kunkin aliluettelon toiseksi suurimman elementin. Tuloksena on luettelo toiseksi suurimmista elementeistä, joka sitten tulostetaan. Tulos näyttää toiseksi suurimman elementin jokaisesta alkuperäisen luettelon aliluettelosta.

Python 3




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

>

>

Lähtö:

[3, 16, 9]>

Lambda-toimintoja voidaan käyttää yhdessä sisäänrakennettujen toimintojen, kuten suodattaa() , kartta() ja vähentää() .

Lambda()-funktion käyttö suodattimen() kanssa

Pythonin filter()-funktio ottaa funktion ja listan argumentteina. Tämä tarjoaa tyylikkään tavan suodattaa pois kaikki sekvenssijonon elementit, joille funktio palauttaa True. Tässä on pieni ohjelma, joka palauttaa parittomat luvut syöttöluettelosta:

Suodata kaikki parittomat luvut filter()- ja lambda-funktiolla

Tässä lambda x: (x % 2 != 0) palauttaa arvon tosi tai epätosi, jos x ei ole parillinen. Koska filter() säilyttää elementit vain siellä, missä se tuottaa Totta , joten se poistaa kaikki luodut parittomat luvut Väärä .

Python 3




li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>filter>(>lambda> x: (x>%> 2> !>=> 0>), li))> print>(final_list)>

>

>

Lähtö:

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

Suodata kaikki yli 18-vuotiaat ihmiset käyttämällä lambda- ja filter()-funktiota

Koodi suodattaa ikäluettelon ja poimii aikuisten (yli 18-vuotiaiden) iät lambda-funktion ja ' filter'> toiminto. Sitten se tulostaa luettelon aikuisten iästä. Tulos näyttää 18 vuotta täyttäneiden henkilöiden iät.

Python 3




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

merkkijonotaulukko c-kielellä
>

>

Lähtö:

[90, 59, 21, 60]>

Lambda()-funktion käyttö map()

Pythonin map()-funktio ottaa argumenttina funktion ja listan. Funktiota kutsutaan lambda-funktiolla ja listalla ja palautetaan uusi lista, joka sisältää kaikki kyseisen funktion palauttamat lambda-muokatut kohteet jokaiselle alkiolle. Esimerkki:

Kerro kaikki luettelon elementit kahdella käyttämällä lambda- ja map()-funktiota

Koodi kaksinkertaistaa luettelon jokaisen elementin käyttämällä lambda-funktiota ja ' map'> toiminto. Sitten se tulostaa uuden luettelon, jossa on kaksinkertaiset elementit. Tulos näyttää jokaisen alkuperäisen luettelon elementin kerrottuna kahdella.

Python 3




li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>map>(>lambda> x: x>*>2>, li))> print>(final_list)>

>

>

Lähtö:

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

Muunna kaikki luettelon elementit isoiksi kirjaimilla lambda- ja map()-funktiolla

Koodi muuntaa luettelon eläinten nimistä isoiksi käyttämällä lambda-funktiota ja ' map'> toiminto. Sitten se tulostaa luettelon eläinten nimet isoilla kirjaimilla. Tulos näyttää eläinten nimet kaikilla isoilla kirjaimilla.

Python 3




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

>

>

Lähtö:

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

Lambda()-funktion käyttö reduktorin() kanssa

The vähentää() Python-funktio ottaa argumenttina funktion ja listan. Funktiota kutsutaan lambda-funktiolla ja iteroitavalla ja palautetaan uusi pelkistetty tulos. Tämä suorittaa toistuvan toiminnon iteroitavien parien yli. Reduce()-funktio kuuluu funktioon toiminnalliset työkalut moduuli.

Luettelon kaikkien elementtien summa lambda- ja vähennysfunktiolla().

Koodi laskee luettelon elementtien summan käyttämällä ' reduce'> toiminto alkaen ' functools'> moduuli. Se tuo maahan ' reduce'> , määrittää luettelon, käyttää lambda-funktiota, joka lisää kaksi elementtiä kerrallaan ja tulostaa luettelon kaikkien elementtien summan. Tulos näyttää lasketun summan.

Python 3




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

>

>

Lähtö:

193>

Tässä kahden edellisen elementin tulokset lisätään seuraavaan elementtiin ja tämä jatkuu listan loppuun asti kuten ((((5+8)+10)+20)+50)+100).

Etsi luettelon enimmäiselementti käyttämällä lambda- ja vähennysfunktiota ().

Koodi käyttää ' functools'> moduuli löytääksesi luettelon enimmäiselementin ( ' lis'> ) käyttämällä ' reduce'> toiminto ja lambda-toiminto. Sitten se tulostaa enimmäiselementin, joka on tässä tapauksessa 6.

Python 3




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

>

>

Lähtö:

The maximum element of the list is : 6>