Kas ir Lambda funkcijas un kā tās izmantot?



Uzziniet Python lambda funkcijas, kā arī atšķirību starp parastajām un lambda funkcijām un to, kā tās var izmantot filtrā (), kartē (), reducēt ().

Nosaukums ir konvencija, kas tiek izmantota, lai atsauktos vai uzrunātu jebkuru entītiju. Gandrīz visam ap mums ir vārds. Programmēšanas pasaule arī notiek saskaņā ar to. Bet vai ir jānosaka viss? Vai arī jums var būt kaut kas vienkārši anonīms? Atbilde ir, jā. ' nodrošina Lambda funkcijas, kas pazīstamas arī kā anonīmas funkcijas, kuras faktiski ir bez nosaukuma. Tāpēc ejam uz priekšu, lai uzzinātu par šīm Python ‘anonīmajām noslēpumiem’ šādā secībā.

Tātad sāksim :)





Kāpēc izmantot Python Lambda funkcijas?


Anonīmo funkciju galvenais mērķis ir parādīties, kad jums nepieciešama kāda funkcija tikai vienu reizi. Tos var izveidot visur, kur tie ir nepieciešami. Šī iemesla dēļ Python Lambda funkcijas tiek dēvētas arī par izmetšanas funkcijām, kuras tiek izmantotas kopā ar citām iepriekš definētām funkcijām, piemēram, filtrs (), karte () utt. Šīs funkcijas palīdz samazināt koda rindiņu skaitu, salīdzinot ar normāli .

Lai to pierādītu, turpināsim tālāk un uzzināsim par Python Lambda funkcijām.



Kas ir Python Lambda funkcijas?


Python Lambda funkcijas ir funkcijas, kurām nav nosaukuma. Tos sauc arī par anonīmām vai bez nosaukuma funkcijām. Vārds ‘lambda’ nav nosaukums, bet gan tā atslēgvārds. Šis atslēgvārds norāda, ka funkcija, kas seko, ir anonīma.

Tagad, kad esat informēts par to, uz ko attiecas šīs anonīmās funkcijas, ļaujiet mums virzīties tālāk, lai redzētu, kā jūs rakstāt šīs Python Lambda funkcijas.

Kā rakstīt Lambda funkcijas Python?

Lambda funkcija tiek izveidota, izmantojot lambda operatoru, un tās sintakse ir šāda:



Sintakse:

lambda argumenti: izteiksme

Python lambda funkcija var būt jebkurš argumentu skaits, bet tas prasa tikai viena izteiksme. Ievades vai argumenti var sākties no 0 un sasniegt jebkuru robežu. Tāpat kā jebkuras citas funkcijas, ir lieliski, ja ir lambda funkcijas bez ieejas. Tādēļ jums var būt lambda funkcijas jebkurā no šiem formātiem:

PIEMĒRS:

lambda: “Norādiet mērķi”

Šeit lambda funkcija neuzņemas nekādus argumentus.

PIEMĒRS:

lambda aviens: “Norādiet aviens'

Lambda izmanto vienu ievadi, kas ir aviens.

rubīna uz sliedēm tīmekļa lietojumprogramma

Līdzīgi, jums var būt lambda aviens, uz2, uz3..uzn.

Ņemsim dažus piemērus, lai to parādītu:

1. PIEMĒRS:

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

REZULTĀTS: 9

2. PIEMĒRS:

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

REZULTĀTS: divdesmitviens

Kā redzat, šeit esmu paņēmis divus piemērus. Pirmajā piemērā tiek izmantota lambda funkcija tikai ar vienu izteicienu, bet otrajā piemērā tam ir nodoti divi argumenti. Lūdzu, ņemiet vērā, ka abām funkcijām ir viena izteiksme, kurai seko argumenti. Tāpēc lambda funkcijas nevar izmantot vietās, kur jums nepieciešamas vairākrindu izteiksmes.

No otras puses, parastās pitona funkcijas to funkciju definīcijās var iekļaut jebkuru skaitu apgalvojumu.

Kā anonīmās funkcijas samazina koda lielumu?

Pirms salīdzināt nepieciešamā koda daudzumu, vispirms pierakstīsim koda sintaksi un salīdziniet to ar iepriekš aprakstītajām lambda funkcijām.

Jebkura normāla Python funkcija ir definēta, izmantojot a def atslēgvārdu šādi:

Sintakse:

def funkcijas_nosaukums (parametri):
paziņojumi)

Kā redzat, lambda funkcijai nepieciešamā koda apjoms ir diezgan mazāks nekā parastajām funkcijām.

Pārrakstīsim iepriekš ņemto piemēru, izmantojot parastās funkcijas tagad.

PIEMĒRS:

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

REZULTĀTS: 9

Kā redzat, iepriekš minētajā piemērā mums ir nepieciešams atgriešanās priekšraksts my_func, lai novērtētu kvadrāta 3 vērtību. Turpretī funkcija lambda neizmanto šo atgriešanās paziņojumu, bet gan anonīmās funkcijas pamattekstu. ir rakstīts vienā rindā ar pašu funkciju aiz kolu simbola. Tāpēc funkcijas lielums ir mazāks nekā my_func.

Tomēr iepriekšminētajos piemēros lambda funkcijas tiek sauktas, izmantojot citas a. Tas tiek darīts, jo šīs funkcijas ir bez nosaukuma, un tāpēc ir nepieciešams izsaukt kādu vārdu. Bet šis fakts var šķist neskaidrs, kāpēc izmantot šādas bez nosaukuma funkcijas, ja jums faktiski jāpiešķir kāds cits vārds, lai tās izsauktu? Un, protams, pēc tam, kad manai funkcijai ir piešķirts vārds a, tas vairs nepaliek bez nosaukuma! Pa labi?

Tas ir pamatots jautājums, taču būtība ir tāda, ka tas nav pareizs šo anonīmo funkciju izmantošanas veids.

Anonīmās funkcijas vislabāk var izmantot citās augstākas kārtas funkcijas kas vai nu izmanto kādu funkciju kā argumentu, vai atgriež funkciju kā izvadi. Lai to parādītu, tagad virzīsimies uz nākamo tēmu.

Python Lambda funkcijas ietilpst lietotāja definētās funkcijās:

Kā jau minēts iepriekš, lambda funkcijas tiek izmantotas citu funkciju ietvaros, lai atzīmētu vislabākās priekšrocības.

Šis piemērs sastāv no new_func, kas ir parasta pitona funkcija, kurai nepieciešams viens arguments x. Pēc tam šis arguments tiek pievienots nezināmam argumentam y, kas tiek piegādāts caur lambda funkciju.

PIEMĒRS:

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

REZULTĀTS:

6
5
Kā redzat, iepriekšējā piemērā lambda funkcija, kas atrodas new_func, tiek izsaukta ikreiz, kad mēs izmantojam new_func (). Katru reizi mēs argumentiem varam nodot atsevišķas vērtības.

Tagad, kad esat redzējis, kā izmantot anonīmas funkcijas augstākas pakāpes funkcijās, ļaujiet mums tagad virzīties uz priekšu, lai saprastu vienu no populārākajiem izmantošanas veidiem, kas atrodas filtru (), kartes () un samazināšanas () metodēs.

Kā izmantot anonīmās funkcijas filtrā (), kartē () un samazinātā ():

Anonīmas funkcijas filtrs ():

filtrs ():

Metode filter () tiek izmantota, lai filtrētu dotos atkārtojumus (sarakstus, kopas utt.) Ar citas funkcijas palīdzību, kas nodota kā arguments, lai pārbaudītu, vai visi elementi ir patiesi vai nepatiesi.

leļļu vs ansible vs šefpavārs

Šīs funkcijas sintakse ir šāda:

Sintakse:

filtrs (funkcija, iterējama)

Tagad apsveriet šādu piemēru:

PIEMĒRS:

my_list = [2,3,4,5,6,7,8] new_list = list (filtrs (lambda a: (a / 3 == 2), mans_ saraksts)) print (new_list)

REZULTĀTS: [6]

Šeit my_list ir iterējamo vērtību saraksts, kas tiek nodots filtra funkcijai. Šī funkcija izmanto lambda funkciju, lai pārbaudītu, vai sarakstā ir kādas vērtības, kas būs vienādas ar 2, dalot ar 3. Izeja sastāv no saraksta, kas atbilst anonīmās funkcijas izteicienam.

karte ():

Map () funkcija Python ir funkcija, kas piešķir noteiktu funkciju visām atkārtojamām versijām un atgriež jaunu sarakstu.

Sintakse:

karte (funkcija, iterējama)

Ņemsim piemēru, lai parādītu lambda funkciju izmantošanu kartes () funkcijā:

PIEMĒRS:

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

REZULTĀTS:

kā pārveidot dubultā par int Java

[True, True, True, True, False, True, True]

Iepriekš minētā izeja parāda, ka vienmēr, kad atkārtojamo vērtību vērtība nav vienāda ar 2, dalot ar 3, atgrieztajam rezultātam jābūt Patiesam. Tādējādi visiem elementiem my_list tas atgriež vērtību true, izņemot vērtību 6, kad nosacījums mainās uz False.

samazināt ():

Funkcija reduc () tiek izmantota, lai pielietotu kādu citu funkciju elementu sarakstam, kas tam tiek nodots kā parametrs un visbeidzot atgriež vienu vērtību.

Šīs funkcijas sintakse ir šāda:

Sintakse:

samazināt (funkcija, secība)

PIEMĒRS:

no functools importa samazināšanas samazinājums (lambda a, b: a + b, [23,21,45,98])

Iepriekš minētais piemērs ir attēlots šādā attēlā:

reducēt-pitons lambda-edureka

REZULTĀTS: 187

Rezultāts skaidri parāda, ka visi saraksta elementi ir tiek nepārtraukti pievienots atgriezt gala rezultātu.

Ar to mēs esam nonākuši pie šī raksta par ‘Python Lambda’ beigām. Ceru, ka jums ir skaidrs viss, kas ar jums dalīts. Pārliecinieties, ka pēc iespējas vairāk praktizējat, un atgriezieties savā pieredzē.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī “Python Lambda” emuāra komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.

Lai iegūtu padziļinātas zināšanas par Python kopā ar dažādām lietojumprogrammām, varat reģistrēties tiešraidē ar diennakts atbalstu un piekļuvi visu mūžu.