Oglas

Lambde u Pythonu jedna su od najkorisnijih, važnih i najzanimljivijih značajki koje treba znati. Nažalost, također ih je lako pogrešno shvatiti i pogriješiti.

U ovom ćemo članku objasniti sve što trebate znati o tim misterioznim funkcijama, kako ih koristiti i zašto su korisne.

Prije nego što uronite u ove praktične primjere, vi to možda želite postavili Python virtualno okruženje Naučite kako koristiti virtualno okruženje PythonaBez obzira jeste li iskusni programer Python-a ili tek započinjete, učenje kako postaviti virtualno okruženje ključno je za svaki Python projekt. Čitaj više . Ako to uopće ne želite, pokušajte barem s ovim primjerima s interaktivnom mrežnom Python školjkom Isprobajte Python u svom pregledniku s ovim besplatnim internetskim interaktivnim školjkamaBez obzira prolazite li kroz ove Python primjere ili pregledavate osnove nizova i popisa, možete testirati kôd pravo u svom pregledniku. Evo najboljih internetskih tumača Python-a koje smo pronašli. Čitaj više .

Što je Lambda u Pythonu?

instagram viewer

Lambda je jednostavno način definiranja funkcije u Pythonu. Ponekad su poznati i kao „lambda-operateri“ ili „lambda-funkcije“.

Ako ste ranije koristili Python, vjerojatno ste svoje funkcije definirali pomoću def ključnu riječ i do sada je dobro funkcioniralo. Pa zašto postoji drugi način da učinite istu stvar?

Razlika je u tome što su lambda funkcije anonimne. Znači, to su funkcije koje ne moraju biti imenovane. Koriste se za stvaranje malih, jednokratnih funkcija u slučajevima kada bi "prava" funkcija bila prevelika i glomazna.

Lambde vraćaju funkcijski objekt koji se može dodijeliti varijabli. Lambda može imati bilo koji broj argumenata, ali može imati samo jedan izraz. Ne možete nazvati druge funkcije unutar lambda.

Najčešća uporaba lambda funkcija je u kodu koji zahtijeva jednostavnu jedno-linijsku funkciju, gdje bi bilo suvišno napisati potpunu normalnu funkciju. Ovo je detaljnije opisano u nastavku, „Što o karti, filtriranju i smanjenju?“.

Kako koristiti Lambdas u Pythonu

Prije nego što pogledamo lambda funkciju, pogledajmo super osnovnu funkciju definiranu na "tradicionalni" način:

def add_five (broj): povratni broj + 5 ispisa (add_five (broj = 4))
kako koristiti lamba funkcije u pythonu

Ova je funkcija vrlo osnovna, ali služi za ilustriranje janjetine. Vaš je možda složeniji od ovoga. Ova funkcija dodaje pet bilo kojem broju koji mu se prenese putem broj parametar.

Evo kako to izgleda lambda funkcija:

add_five = lambda broj: broj + 5 ispisa (add_five (broj = 4))
kako koristiti lamba funkcije u pythonu

Umjesto korištenja def, riječ À koristi se. Nije potrebno zagraditi zagrade, ali bilo koje riječi iza À ključna riječ kreirana je kao parametri. Debelo crijevo se koristi za odvajanje parametara i izraza. U ovom slučaju izraz je broj + 5.

Nema potrebe za korištenjem povratak ključna riječ - lambda to radi automatski.

Evo kako biste stvorili lambda funkciju s dva argumenta:

add_numbers_and_five = lambda broj1, broj2: broj1 + broj2 + 5 ispisa (add_numbers_and_five (broj1 = 4, broj2 = 3))
kako koristiti lamba funkcije u pythonu

Ako još uvijek niste sigurni u vezi s lambdama, sljedeći će odjeljak zaroniti i pomoći vam da ugledate svjetlost.

Python Lambdas s kartama, filtriranjem i smanjenjem

Python core knjižnica ima tri metode nazvane karta, smanjiti, i filtar. Ove su metode možda najbolji razlozi za korištenje lambda funkcija.

karta funkcija očekuje dva argumenta: funkciju i popis. Ona uzima tu funkciju i primjenjuje je na svaki element na popisu, vraćajući popis modificiranih elemenata kao objekt karte. popis funkcija se koristi za ponovno pretvaranje rezultiralog objekta karte u popis.

Evo kako se upotrebljava karta bez lambda:

list1 = [2, 4, 6, 8] ispis (list1) def add_five (broj): povratni broj + 5 new_list = popis (karta (add_five, list1)) print (new_list)
kako koristiti lamba funkcije u pythonu

Ova funkcija karata je prilično korisna, ali mogla bi biti i bolja. add_five funkcija se prenosi kao argument, ali što ako ne želite stvoriti funkciju svaki put kada upotrebljavate kartu? Možete umjesto toga koristiti lambda!

Evo kako taj isti kod izgleda, samo uz funkciju koju je zamijenila lambda:

list1 = [2, 4, 6, 8] ispis (list1) new_list = popis (mapa (lambda x: x + 5, list1)) ispis (novi_list)
kako koristiti lamba funkcije u pythonu

Kao što vidite, cjelina add_five funkcija više nije potrebna. Umjesto toga, lambda funkcija koristi se za održavanje stvari urednim.

Sa filtar funkcija, postupak je gotovo isti. filtar uzima funkciju i primjenjuje je na svaki element na popisu i stvorio je novi popis samo s elementima koji su uzrokovali da funkcija vrati True.

Prvo, bez janjetine:

brojevi = [1, 4, 5, 10, 20, 30] ispis (brojevi) def veći_than_ten_func (broj): ako je broj> 10: vrati Istina drugo: vrati Lažni novi_brojevi = popis (filtriraj (veći_than_ten_func, brojevi)) ispis (novi_brojevi)
kako koristiti lamba funkcije u pythonu

Nema ništa loše s ovim kodom, ali postaje malo dulje. Da vidimo koliko redaka lambda može ukloniti:

brojevi = [1, 4, 5, 10, 20, 30] ispis (brojevi) new_numbers = popis (filter (lambda x: x> 10, brojevi)) ispis (novi_brojevi)
kako koristiti lamba funkcije u pythonu

Funkcija lambde zamijenila je potrebu za cjelinom greater_than_ten_func! I to učinio u pet jednostavnih riječi. Zbog toga su lambde moćne: smanjuju nered zbog jednostavnih zadataka.

Za kraj, pogledajmo smanjiti. Reduce je još jedna cool Python funkcija. On primjenjuje valjanje izračuna na sve stavke na popisu. Možete to koristiti za zbrajanje zbroja ili množenje svih brojeva zajedno:

iz uvoza funkcionalnih značajki smanji broj = [10, 20, 30, 40] ispis (brojevi) def ljeto (a, b): vrati a + b rezultat = smanji (ljeto, brojevi) ispis (rezultat)
kako koristiti lamba funkcije u pythonu

Ovaj primjer treba uvesti smanjiti od functools modula, ali ne brinite, modul funktools dio je osnovne knjižnice Pythona.

Priča je vrlo ista sa lambda, nema potrebe za funkcijom:

iz uvoza funkcionalnih značajki smanji broj = [10, 20, 30, 40] ispis (brojevi) rezultat = smanjenje (lambda a, b: a + b, brojevi) ispis (rezultat)
kako koristiti lamba funkcije u pythonu

Stvari na koje treba paziti s Python Lambdasom

Ovi su primjeri pokazali koliko su lambda funkcije, zajedno s mapom, filtriranjem i smanjenjem, iz jezgre knjižnice Python. Ipak, postoji nekoliko načina na koje funkcije lambda ne pomažu.

Ako radite išta više od osnovnog zadatka ili želite nazvati druge metode, upotrijebite normalnu funkciju. Lambde su sjajne za jednokratne, anonimne funkcije, ali moraju imati samo jedan izraz. Ako vam lambda počne izgledati kao uobičajeni izraz, vjerojatno je došlo vrijeme da se preusmerite na namjensku metodu.

Više savjeta potražite u našim vodič za objektno orijentirano programiranje u Pythonu Vodič za početnike za objektno orijentirano programiranje Python-aDa biste u potpunosti iskoristili prednosti Pythona, htjet ćete naučiti kako Python djeluje s objektno orijentiranim programiranjem (OOP). Čitaj više i provjerite naše Vodič za često postavljana pitanja za početnike Pythona Najčešća pitanja o programiranju PythonaU ovom članku ćemo vas provesti kroz sve što trebate znati o Pythonu kao početniku. Čitaj više .

Joe je diplomski studij informatike na Sveučilištu u Lincolnu u Velikoj Britaniji. On je profesionalni programer softvera, a kad ne leti dronovima ili piše glazbu, često ga mogu naći fotografirati ili snimati videozapise.