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)>> 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>>> 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>> |
>
>
Lähtö:
The maximum element of the list is : 6>