Tässä artikkelissa yritämme oppia Python Lambdasta.
Määritelmä
Lambda on funktio, joka on määritelty ilman nimeä. Tämä voi viedä useita argumentteja, mutta vain yksi lauseke on sallittu, joka arvioidaan ja palautetaan. Missä funktio-objekteja vaaditaan, voimme käyttää lambda-funktiota.
Syntaksi:
lambda-argumentit: lauseke
Esimerkki 1: Alla olevaa funktiota käytetään luvun kuution laskemiseen.
def-kuutio (a):palauta a * a * a
tulosta (kuutio (3))
Yllä oleva funktio voidaan kirjoittaa lambdalla, kuten alla on esitetty:
p = lambda x: x * x * xtulosta (p (3))
Esimerkki 2: Alla olevaa funktiota käytetään laskemaan kahden luvun summa.
def summa_2 (x, y):palauta x + y
tulosta (summa_2 (10,20))
Yllä oleva toiminto voidaan kirjoittaa lambdalla, kuten alla on esitetty:
p = lambda x, y: x + ytulosta (s (10,20))
Esimerkki 3: Alla olevassa lambda-esimerkissä on useita argumentteja.
p = lambda x, y, z: x + y + ztulosta (p (10, 5, 3))
Esimerkki 4: Tämä toiminto kertoo luvun kahdella ja voidaan kirjoittaa Lambda-funktiolla seuraavasti:
def funktio (n):palaa lambda x: x * n
multiply_by_2 = func (2)
tulosta (kerro_määrä_2 (11))
tulosta (moninkertaistaa_määrä_2 (15))
Esimerkki 5: Funktio ottaa funktion argumenttina ja palauttaa tuloksen.
function_argument = lambda p, f: p + f (p)tulosta (function_argument (5, lambda p: p * p))
tulosta (funktio_argumentti (10, lambda x: x - 3))
tulosta (funktio_argumentti (10, lambda x: x + 5))
tulosta (funktio_argumentti (10, lambda x: x / 5))
Esimerkki 6: Alla olevassa esimerkissä arvot lajitellaan lambdalla.
# (nimi, sukunimi, ikä)data = [("Sachin", "Tendulkar", "42"), ("Rahul", "Dravid", "44"), ("Virendra", "Sehwag", "40")]
tiedot.lajittelu (avain = lambda x: x [0]) # lajittelu nimen perusteella
tulosta (data)
data = [("Sachin", "Tendulkar", "42"), ("Rahul", "Dravid", "44"), ("Virendra", "Sehwag", "40")]
tiedot.lajittelu (avain = lambda x: x [1]) # lajittelu sukunimen perusteella
tulosta (data)
data = [("Sachin", "Tendulkar", "42"), ("Rahul", "Dravid", "44"), ("Virendra", "Sehwag", "40")]
tiedot.lajittelu (avain = lambda x: x [2]) # lajittelu iän mukaan
tulosta (data)
Siirry nyt python3-tulkkiin.
Lambda-toimintoa käytetään monissa sisäänrakennetuissa menetelmissä. Seuraavassa on joitain esimerkkejä:
1. Kartta
Tämä toiminto kartoittaa kukin elementti peräkkäin lambda-funktiolla.
Syntaksi:
kartta (funktio, seq)
Esim .:
luvut = [1,2,3,4,5,6]
Kerrotaan tässä luettelon kukin elementti kahdella.
mul_2 = kartta (lambda x: x * 2, summat)
print (list (mul_2)) # Se palauttaa karttaobjektin ja kirjoittamalla sen luettelona.
Yllä olevassa toiminnossa jokainen luetteloluettelon osa siirretään lambda-funktioon ja lambda-funktio kertoo sen 2: lla.
luvut = [1,2,3,4,5,6]mul_2 = kartta (lambda x: x * 2, summat)
tulosta (luettelo (mul_2))
2. Suodattaa
Tämä toiminto suodattaa kaikki luettelon osat, joille lambda-funktio palauttaa True.
Syntaksi:
suodatin (funktio, seq)
Esim .:
luvut = [0,1,2,3,4,5,6,7,8,9,10]
parittomat_summat = suodatin (lambda x: x% 2, luvut)
print (list (parittomat_numerot)) # Se palauttaa karttaobjektin ja kirjoittamalla sen luettelona.
parittomat_summat = suodatin (lambda x: x% 2, luvut)
tulosta (luettelo (parittomat_numerot))
3. Vähentää
Tämä funktio palauttaa yhden arvon soveltamalla funktiolle func () seq.
Syntaksi:
vähentää (func, seq)
Esim .:
luvut = [0,1,2,3,4,5,6,7,8,9,10]
arvo = pienennä (lambda x, y: x + y, summat)
tulosta (arvo)
Yllä olevassa luettelossa se vie kaksi ensimmäistä elementtiä ja suorittaa lisäyksen. Lisäyksen tulos lisätään kolmanteen elementtiin ja niin edelleen. Lopuksi se palauttaa yhden arvon.
Huomaa: Tämä menetelmä ei ole käytettävissä python3 + -versiossa.
luvut = [0,1,2,3,4,5,6,7,8,9,10]arvo = pienennä (lambda x, y: x + y, summat)
tulosta (arvo)
Johtopäätös
Tästä artikkelista olemme oppineet monia lambda-toiminnon näkökohtia. Riippuen siitä, mitä ohjelma tarvitsee, voimme käyttää sitä ja parantaa python-koodausta. Tätä käytetään yleisimmin argumenttien välittämiseen toiselle funktiolle (esimerkiksi edellä olevat toiminnot ovat nähneet kartoittavan, suodattavan ja pienentävän).