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>