Kas yra „Lambda“ funkcijos ir kaip jas naudoti?



Sužinokite apie „Python lambda“ funkcijas kartu su įprastų funkcijų ir „lambda“ funkcijų skirtumu ir kaip jas galima naudoti filtruojant (), žemėlapį (), mažinant ().

Vardas yra sutartis, naudojama bet kuriam subjektui nurodyti arba adresuoti. Beveik viskas aplink mus turi vardą. Programavimo pasaulis taip pat eina pagal tai. Bet ar būtina viską įvardinti? O gal galite turėti ką nors, kas tiesiog „anonimiška“? Atsakymas yra taip. ' teikia „Lambda“ funkcijas, dar žinomas kaip „Anoniminės“ funkcijos, kurios iš tikrųjų yra bevardės. Taigi eikime toliau ir sužinokime apie šias „anonimines„ Python “paslaptis“ tokia seka.

Taigi pradėkime :)





Kodėl verta naudoti „Python Lambda“ funkcijas?


Pagrindinis anoniminių funkcijų tikslas išryškėja, kai jums reikia tik vienos funkcijos. Jie gali būti kuriami visur, kur jų reikia. Dėl šios priežasties „Python Lambda“ funkcijos taip pat žinomos kaip išmetimo funkcijos, kurios naudojamos kartu su kitomis iš anksto nustatytomis funkcijomis, tokiomis kaip filtras (), žemėlapis () ir kt. Šios funkcijos padeda sumažinti jūsų kodo eilučių skaičių, palyginti su normalus .

Norėdami tai įrodyti, eikime toliau ir sužinokime apie „Python Lambda“ funkcijas.



Kas yra „Python Lambda“ funkcijos?


„Python Lambda“ funkcijos yra funkcijos, neturinčios jokio pavadinimo. Jie taip pat žinomi kaip anoniminės ar bevardės funkcijos. Žodis „lambda“ nėra vardas, bet jo raktinis žodis. Šis raktinis žodis nurodo, kad sekanti funkcija yra anoniminė.

Dabar, kai žinote, ką reiškia šios anoniminės funkcijos, leiskite mums judėti toliau, kad pamatytume, kaip rašote šias „Python Lambda“ funkcijas.

Kaip parašyti „Lambda“ funkcijas „Python“?

„Lambda“ funkcija sukurta naudojant „lambda“ operatorių, o jos sintaksė yra tokia:



Sintaksė:

lambda argumentai: išraiška

„Python“ lambda funkcija gali turėti bet kokį argumentų skaičių, bet tam reikia tik viena išraiška. Įvestys ar argumentai gali prasidėti nuo 0 ir viršyti bet kurią ribą. Kaip ir bet kurios kitos funkcijos, labai gerai, kad yra lambda funkcijos be įvesties. Todėl „lambda“ funkcijas galite turėti bet kuriuo iš šių formatų:

PAVYZDYS:

lambda: „Nurodykite tikslą“

Čia lambda funkcija nepateikia jokių argumentų.

PAVYZDYS:

lambda avienas: „Nurodykite avienas'

Čia lambda imasi vieno įvesties, kuri yra avienas.

SQL serverio pamokos pradedantiesiems

Panašiai galite turėti lambda avienas, į2, į3..įn.

Paimkime keletą pavyzdžių, kaip tai parodyti:

1 PAVYZDYS:

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

IŠĖJIMAS: 9

2 PAVYZDYS:

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

IŠĖJIMAS: dvidešimt vienas

Kaip matote, aš čia paėmiau du pavyzdžius. Pirmajame pavyzdyje naudojama lambda funkcija tik su viena išraiška, o antrajame pateikiami du argumentai. Atkreipkite dėmesį, kad abi funkcijos turi vieną išraišką ir argumentus. Todėl lambda funkcijos negali būti naudojamos ten, kur jums reikia kelių eilučių posakių.

Kita vertus, įprastos pitono funkcijos gali apibrėžti bet kokį skaičių teiginių.

Kaip anoniminės funkcijos sumažina kodo dydį?

Prieš palygindami reikiamą kodo kiekį, pirmiausia užrašykime sintaksę ir palyginkite su anksčiau aprašytomis lambda funkcijomis.

Bet kuri įprasta „Python“ funkcija apibrėžiama naudojant a def raktinį žodį taip:

sujungti rūšiavimo kodą c ++

Sintaksė:

def funkcijos_pavadinimas (parametrai):
pareiškimas (-ai)

Kaip matote, „lambda“ funkcijai reikalingo kodo kiekis yra gana mažesnis nei įprastų funkcijų.

Perrašykime anksčiau paimtą pavyzdį, naudodami įprastas funkcijas dabar.

PAVYZDYS:

def my_func (x): grąžinti x * x spausdinti (my_func (3))

IŠĖJIMAS: 9

Kaip matote, aukščiau pateiktame pavyzdyje mums reikia grąžinimo sakinio my_func, kad įvertintume 3 kvadrato vertę. Priešingai, lambda funkcija naudoja ne šį grįžimo sakinį, o anoniminės funkcijos kūną. rašomas toje pačioje eilutėje kaip ir pati funkcija, po dvitaškio simbolio. Todėl funkcijos dydis yra mažesnis nei my_func.

Tačiau aukščiau pateiktuose pavyzdžiuose lambda funkcijos vadinamos kitomis a. Tai daroma todėl, kad šios funkcijos yra bevardės, todėl reikia vadinti kokį nors vardą. Tačiau šis faktas gali atrodyti painus, kodėl reikia naudoti tokias bevardes funkcijas, kai jums reikia iš tikrųjų priskirti kitą pavadinimą, kad jas paskambintumėte? Ir, žinoma, paskyrus vardą a mano funkcijai, jis nebelieka bevardis! Ar ne?

Tai teisėtas klausimas, tačiau esmė ta, kad tai nėra teisingas būdas naudoti šias anonimines funkcijas.

Anonimines funkcijas geriausia naudoti kitose aukštesnės eilės funkcijos kurie arba naudoja kokią nors funkciją kaip argumentą, arba grąžina funkciją kaip išvestį. Norėdami tai parodyti, pereikime prie kitos temos.

„Python Lambda“ funkcijos priklauso nuo vartotojo nustatytų funkcijų:

Kaip jau minėta, lambda funkcijos yra naudojamos kitose funkcijose, siekiant pažymėti geriausią pranašumą.

Šis pavyzdys susideda iš new_func, kuri yra įprasta pitono funkcija, užimanti vieną argumentą x. Tada šis argumentas pridedamas prie nežinomo argumento y, kuris pateikiamas per lambda funkciją.

PAVYZDYS:

def new_func (x): grįžti (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

IŠĖJIMAS:

6
5
Kaip matote, aukščiau pateiktame pavyzdyje „lambda“ funkcija, esanti „new_func“, yra iškviečiama, kai tik naudojame „new_func“ (). Kiekvieną kartą argumentams galime perduoti atskiras vertes.

Dabar, kai pamatėte, kaip naudoti anonimines funkcijas aukštesnės eilės funkcijose, pažvelkime į priekį, kad suprastume vieną iš populiariausių jos naudojimo būdų, esančių filtro (), žemėlapio () ir mažinimo () metoduose.

Kaip naudoti anonimines funkcijas filtre (), žemėlapyje () ir redukuoti ():

Anoniminės funkcijos filtras():

filtras():

Filtras () naudojamas norint filtruoti pateiktas iterable (sąrašus, rinkinius ir kt.) Naudojant kitą funkciją, perduotą kaip argumentą, norint patikrinti, ar visi elementai yra teisingi ar klaidingi.

Šios funkcijos sintaksė yra:

Sintaksė:

filtras (funkcija, kartojamas)

Dabar apsvarstykite šį pavyzdį:

PAVYZDYS:

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

IŠĖJIMAS: [6]

Čia „my_list“ yra iterinamų reikšmių sąrašas, kuris perduodamas filtro funkcijai. Ši funkcija naudoja „lambda“ funkciją, kad patikrintų, ar sąraše yra kokių nors verčių, kurios bus lygios 2 dalijant iš 3. Išvestį sudaro sąrašas, kuris tenkina anoniminės funkcijos išraišką.

žemėlapis ():

„Python“ funkcija „map ()“ yra funkcija, taikanti nurodytą funkciją visoms kartojamoms versijoms ir grąžinanti naują sąrašą.

Sintaksė:

žemėlapis (funkcija, kartojamas)

Paimkime pavyzdį, kaip parodyti lambda funkcijų naudojimą map () funkcijoje:

PAVYZDYS:

my_list = [2,3,4,5,6,7,8] new_list = list (žemėlapis (lambda a: (a / 3! = 2), li)) spausdinti (naujas_ sąrašas)

IŠĖJIMAS:

[Tiesa, tiesa, tiesa, tiesa, melas, tiesa, tiesa]

Pirmiau pateiktas rezultatas rodo, kad kai kartojamų elementų vertė nėra lygi 2 dalijant iš 3, grąžintas rezultatas turėtų būti teisingas. Taigi, visiems elementams „my_list“ jis pateikia reikšmę „true“, išskyrus 6 reikšmę, kai sąlyga pasikeičia į „False“.

sumažinti ():

Funkcija reduc () naudojama tam, kad būtų pritaikyta kuri nors kita funkcija elementų sąrašui, kuris jam perduodamas kaip parametras ir galiausiai grąžina vieną vertę.

Šios funkcijos sintaksė yra tokia:

Sintaksė:

sumažinti (funkcija, seka)

turi vs yra java

PAVYZDYS:

iš functools importas sumažina sumažina (lambda a, b: a + b, [23,21,45,98])

Ankstesnis pavyzdys pavaizduotas šiame paveikslėlyje:

redukcinis-pitonas lambda-edureka

IŠĖJIMAS: 187

Išvestis aiškiai parodo, kad visi sąrašo elementai yra nuolat pridedama kad būtų grąžintas galutinis rezultatas.

Tuo mes baigėme šį straipsnį apie „Python Lambda“. Tikiuosi, kad jums aišku viskas, kas su jumis pasidalinta. Įsitikinkite, kad praktikuojate kuo daugiau ir grąžinkite savo patirtį.

Turite mums klausimą? Prašau tai paminėti šio „Python Lambda“ tinklaraščio komentarų skyriuje ir mes kuo greičiau susisieksime su jumis.

Norėdami gauti išsamių žinių apie „Python“ kartu su įvairiomis jo programomis, galite užsiregistruoti tiesiogiai su parą visą parą ir visą gyvenimą.