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

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

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

Lähtö:

The maximum element of the list is : 6 


Top Artikkelit

Luokka

Mielenkiintoisia Artikkeleita