Mis on lambda funktsioonid ja kuidas neid kasutada?



Õppige Pythoni lambda funktsioone, erinevust tavaliste funktsioonide ja lambda funktsioonide vahel ning seda, kuidas neid saab kasutada filtrites (), kaardil (), redutseerimisel ().

Nimi on kokkulepe, mida kasutatakse mis tahes üksusele viitamiseks või selle aadressimiseks. Peaaegu kõigel meie ümber on nimi. Ka programmeerimismaailm käib selle järgi. Kuid kas kõike peab nimetama? Või kas teil on midagi, mis on lihtsalt 'anonüümne'? Vastus on jah. ' pakub Lambda funktsioone, tuntud ka kui anonüümseid funktsioone, mis on tegelikult nimeta. Nii et lähme edasi, et õppida nende Pythoni ‘anonüümsete saladuste’ kohta järgmises järjestuses.

Alustame siis :)





Miks kasutada Python Lambda funktsioone?


Anonüümsete funktsioonide peamine eesmärk ilmneb siis, kui vajate mõnda funktsiooni vaid üks kord. Neid saab luua kõikjal, kus neid vajatakse. Sel põhjusel on Python Lambda funktsioonid tuntud ka kui viskefunktsioonid, mida kasutatakse koos teiste eelnevalt määratletud funktsioonidega, nagu filter (), map () jne. Need funktsioonid aitavad vähendada koodi ridade arvu võrreldes normaalne .

Selle tõestamiseks liigume edasi ja tutvuge Python Lambda funktsioonidega.



Mis on Python Lambda funktsioonid?


Python Lambda funktsioonid on funktsioonid, millel pole ühtegi nime. Neid tuntakse ka anonüümsete või nimetute funktsioonidena. Sõna ’lambda’ ei ole nimi, vaid selle märksõna. See märksõna täpsustab, et järgnev funktsioon on anonüümne.

Nüüd, kui olete teadlik sellest, millele need anonüümsed funktsioonid viitavad, liikuge edasi, et näha, kuidas te neid Python Lambda funktsioone kirjutate.

Kuidas Lambda funktsioone Pythonis kirjutada?

Funktsioon Lambda luuakse operaatori lambda abil ja selle süntaks on järgmine:



SÜNTAKS:

lambda argumendid: avaldis

Python lambda funktsioon võib olla suvaline arv argumente, kuid see võtab lihtsalt üks väljend. Sisendid või argumendid võivad alata 0-st ja ületada mis tahes piiri. Täpselt nagu kõik muud funktsioonid, on täiesti hea, kui lambda funktsioonid on sisendita. Seetõttu võivad teil olla lambda funktsioonid mis tahes järgmistest vormingutest:

NÄIDE:

lambda: „Täpsustage eesmärk”

Siin ei kasuta lambda funktsioon ühtegi argumenti.

NÄIDE:

lambda aüks: „Täpsustage aüks'

Siin võtab lambda ühe sisendi, mis on aüks.

javas topelt-int-le valamine

Samamoodi võite saada lambda aüks, to2, to3..n.

Võtame selle näitamiseks mõned näited:

NÄIDE 1:

a = lambda x: x * x print (a (3))

VÄLJUND: 9

NÄIDE 2:

a = lambda x, y: x * y print (a (3,7))

VÄLJUND: kakskümmend üks

Nagu näete, olen siin toonud kaks näidet. Esimene näide kasutab lambda funktsiooni ainult ühe avaldisega, samas kui teises näites on sellele edastatud kaks argumenti. Pange tähele, et mõlemal funktsioonil on üks avaldis, millele järgnevad argumendid. Seetõttu ei saa lambda funktsioone kasutada seal, kus vajate mitmerealisi väljendeid.

Teisest küljest võivad tavalised Pythoni funktsioonid oma funktsioonide definitsioonides võtta suvalise arvu lausete.

Kuidas anonüümsed funktsioonid koodi suurust vähendavad?

Enne vajaliku koodihulga võrdlemist kirjutame esmalt üles selle süntaks ja võrrelda seda varem kirjeldatud lambda funktsioonide omaga.

Kõik Pythoni tavalised funktsioonid on määratletud a abil def märksõna järgmiselt:

SÜNTAKS:

def funktsiooni_nimi (parameetrid):
avaldus (ed)

Nagu näete, on lambda-funktsiooni jaoks vajaliku koodi hulk tavaliste funktsioonide omast üsna väiksem.

Kirjutagem tavalise funktsiooni abil nüüd varem võetud näide ümber.

NÄIDE:

def my_func (x): tagastage x * x print (my_func (3))

VÄLJUND: 9

Nagu näete, vajame ülaltoodud näites ruudu 3 väärtuse hindamiseks tagastuse lauset my_func-s. Vastupidi, lambda funktsioon ei kasuta seda tagasilause, vaid anonüümse funktsiooni keha on kirjutatud samale reale funktsiooniga ise, pärast koolonit. Seetõttu on funktsiooni suurus väiksem kui my_func.

Kuid ülaltoodud näidetes toodud lambda funktsioone nimetatakse mõne muu abil a. Seda tehakse seetõttu, et need funktsioonid on nimetud ja vajavad seetõttu mõne nime kutsumist. Kuid see fakt võib tunduda segane, miks kasutada selliseid nimetuid funktsioone, kui peate nende helistamiseks tegelikult mõne muu nime määrama? Ja muidugi, pärast minu funktsioonile nime a määramist ei jää see enam nimeta! Eks?

See on õigustatud küsimus, kuid küsimus on selles, et see pole õige viis nende anonüümsete funktsioonide kasutamiseks.

Anonüümseid funktsioone saab kõige paremini kasutada teistes kõrgema järgu funktsioonid mis kas kasutavad mõnda funktsiooni argumendina või tagastavad väljundina funktsiooni. Selle demonstreerimiseks liikugem nüüd oma järgmise teema poole.

Python Lambda toimib kasutaja määratud funktsioonides:

Nagu eespool mainitud, kasutatakse lambda funktsioone parimate eeliste tähistamiseks muudes funktsioonides.

Järgmine näide koosneb funktsioonist new_func, mis on tavaline Pythoni funktsioon, mis võtab ühe argumendi x. Seejärel lisatakse see argument mõnele tundmatule argumendile y, mis edastatakse lambda funktsiooni kaudu.

NÄIDE:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

VÄLJUND:

genereerida juhuslik string javas

6
5
Nagu näete, kutsutakse ülaltoodud näites funktsiooni lambda, mis on new_func, alati, kui kasutame new_func (). Iga kord saame argumentidele edastada eraldi väärtused.

Nüüd, kui olete näinud, kuidas anonüümseid funktsioone kõrgema järgu funktsioonides kasutada, laseme nüüd edasi liikuda, et mõista selle üht populaarsemat kasutust, mis on meetodites filter (), map () ja reduc ().

Anonüümsete funktsioonide kasutamine filtris (), kaardil () ja vähendamises ():

Anonüümsed funktsioonid filter ():

filter ():

Filter () meetodit kasutatakse antud iterable (loendite, komplektide jne) filtreerimiseks teise argumendina edastatud funktsiooni abil, et testida kõiki elemente tõeseks või valeks.

Selle funktsiooni süntaks on:

SÜNTAKS:

filter (funktsioon, korduv)

Nüüd kaaluge järgmist näidet:

NÄIDE:

my_list = [2,3,4,5,6,7,8] new_list = list (filter (lambda a: (a / 3 == 2), minu_loend)) print (uus_loend)

VÄLJUND: [6]

Siin on minu_loend korduvväärtuste loend, mis edastatakse filtrifunktsioonile. See funktsioon kasutab funktsiooni lambda, et kontrollida, kas loendis on väärtusi, mis võrduvad 2-ga jagatuna 3-ga. Väljund koosneb loendist, mis vastab anonüümse funktsiooni ekspressile.

kaart ():

Funktsioon map () Pythonis on funktsioon, mis rakendab etteantud funktsiooni kõigile iterable-dele ja tagastab uue loendi.

SÜNTAKS:

kaart (funktsioon, korduv)

mis on funktsiooni ülekoormamine c ++

Võtame näite, et näidata lambda funktsioonide kasutamist kaardi () funktsioonis:

NÄIDE:

my_list = [2,3,4,5,6,7,8] new_list = list (kaart (lambda a: (a / 3! = 2), li)) print (uus_loend)

VÄLJUND:

[Tõsi, tõsi, tõsi, tõsi, vale, tõsi, tõsi]

Ülaltoodud väljund näitab, et alati, kui iterable'i väärtus pole 3-ga jagatuna võrdne 2-ga, peaks tagastatav tulemus olema tõene. Seega tagastab kõigi my_list-i elementide puhul tõene, välja arvatud väärtus 6, kui tingimus muutub vääraks.

vähendada ():

Funktsiooni reduc () kasutatakse mõne muu funktsiooni rakendamiseks elementide loendile, mis edastatakse sellele parameetrina ja tagastab lõpuks ühe väärtuse.

Selle funktsiooni süntaks on järgmine:

SÜNTAKS:

vähendama (funktsioon, järjestus)

NÄIDE:

funktsionaalsetest vahenditest impordi vähendamine vähendamine (lambda a, b: a + b, [23,21,45,98])

Ülaltoodud näidet on kujutatud järgmisel pildil:

redutseeri-python lambda-edureka

VÄLJUND: 187

Väljund näitab selgelt, et loendi kõik elemendid on lisatakse pidevalt lõpptulemuse tagastamiseks.

Sellega jõuame selle artikli Python Lambda teemal lõpuni. Loodetavasti on teil selge kõik see, mida teiega on jagatud. Harjutage kindlasti nii palju kui võimalik ja pöörake oma kogemused tagasi.

Kas teil on meile küsimus? Palun mainige seda selle Python Lambda ajaveebi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.

Põhjalike teadmiste saamiseks Pythoni ja selle erinevate rakenduste kohta saate registreeruda otseülekandeks 24/7 toe ja ligipääsuga kogu eluks.