Vodič za početnike u razumijevanju Python lambda funkcija

Vodič za početnike u razumijevanju Python lambda funkcija

Lambde u Pythonu jedna su od najkorisnijih, najvažnijih i najzanimljivijih značajki koje trebate znati. Nažalost, lako ih je i pogrešno razumjeti i pogriješiti.





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





Prije nego što zaronite u ove praktične primjere, možda biste htjeli postaviti Python virtualno okruženje. Ako to čak ni ne želite učiniti, trebali biste barem isprobati ove primjere s interaktivnom mrežnom Python ljuskom .





Što je lambda u Pythonu?

Lambda je jednostavno način definiranja funkcije u Pythonu. Ponekad su poznati i kao 'lambda operatori' ili 'lambda funkcije'.

Ako ste već koristili Python, vjerojatno ste definirali svoje funkcije pomoću def ključna riječ i dosad vam je dobro funkcionirala. 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 se ne moraju imenovati. 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. Lambde mogu imati bilo koji broj argumenata, ali mogu imati samo jedan izraz. Ne možete pozivati ​​druge funkcije unutar lambda.





Najčešća upotreba lambda funkcija je u kodu koji zahtijeva jednostavnu jednorednu funkciju, gdje bi bilo pretjerano napisati potpunu normalnu funkciju. To je detaljnije obrađeno u nastavku, pod 'Što je s kartom, filtriranjem i smanjenjem?'.

Kako koristiti Lambde u Pythonu

Prije nego pogledamo lambda funkciju, pogledajmo super osnovnu funkciju definiranu na 'tradicionalni' način:





def add_five(number):
return number + 5

print(add_five(number=4))

Ova je funkcija vrlo osnovna, ali služi za ilustraciju lambda. Možda je vaše složenije od ovoga. Ova funkcija dodaje pet svakom broju koji joj se prenese kroz broj parametar.

Evo kako to izgleda kao lambda funkcija:

add_five = lambda number: number + 5

print(add_five(number=4))

Umjesto korištenja def , riječ lambda koristi se. Zagrade nisu potrebne, ali sve riječi slijede lambda ključne riječi kreirane su kao parametri. Dvotočka se koristi za odvajanje parametara i izraza. U ovom slučaju izraz je broj + 5 .

Nema potrebe koristiti povratak ključna riječ --- lambda to radi automatski za vas.

Evo kako biste stvorili lambda funkciju s dva argumenta:

google play store na amazon fire
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Ako još uvijek niste sigurni što se tiče lambda, slijedeći odjeljak će vam zaroniti i pomoći vam da vidite svjetlo.

Python Lambde s kartom, filtriranjem i smanjenjem

Osnovna knjižnica Python ima tri metode koje se nazivaju karta , smanjiti , i filtar . Ove su metode vjerojatno najbolji razlog za korištenje lambda funkcija.

The karta funkcija očekuje dva argumenta: funkciju i popis. Ona preuzima tu funkciju i primjenjuje je na svaki element na popisu, vraćajući popis izmijenjenih elemenata kao objekt karte. The popis funkcija se koristi za ponovno pretvaranje rezultirajućeg objekta karte na popis.

Evo kako koristiti kartu bez lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Ova je funkcija karte prilično zgodna, ali mogla bi biti i bolja. the add_five funkcija se prosljeđuje kao argument, ali što ako ne želite stvoriti funkciju svaki put kada koristite kartu? Umjesto toga možete koristiti lambda!

Evo kako izgleda isti kod, samo s funkcijom zamijenjenom lambda:

jedna od ključnih prednosti kapacitivnih zaslona osjetljivih na dodir u odnosu na otporne zaslone osjetljive na dodir je
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Kao što vidite, cjelina add_five funkcija više nije potrebna. Umjesto toga, lambda funkcija služi za održavanje stvari urednima.

S filtar funkciju, postupak je približno isti. filtar uzima funkciju i primjenjuje je na svaki element na popisu te je stvorio novi popis samo s elementima koji su uzrokovali da funkcija vrati True.

Prvo, bez lambda:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Nema ništa loše u ovom kodu, ali postaje malo duži. Pogledajmo koliko lambda redaka može ukloniti:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Lambda funkcija zamijenila je potrebu za cjelinom veći_od_ten_func ! I to je učinjeno u pet jednostavnih riječi. Zato su lambde moćne: smanjuju nered za jednostavne zadatke.

Na kraju, pogledajmo smanjiti . Reduce je još jedna cool funkcija Pythona. Primjenjuje tekući izračun na sve stavke na popisu. Ovo možete upotrijebiti za zbroj ukupnog zbroja ili množenje svih brojeva zajedno:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Ovaj primjer treba uvesti smanjiti od functools modul, ali ne brinite, modul functools dio je jezgrene knjižnice Python.

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

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Na što treba paziti s Python Lambdama

Ovi primjeri pokazali su koliko su lambda funkcije jednostavne, zajedno s mapiranjem, filtriranjem i smanjivanjem, iz jezgrene knjižnice Python. Ipak, postoji nekoliko upotreba u kojima lambda funkcije ne pomažu.

Ako radite nešto više od osnovnog zadatka ili želite pozvati druge metode, upotrijebite normalnu funkciju. Lambde su izvrsne za jednokratne, anonimne funkcije, ali moraju imati samo jedan izraz. Ako vaša lambda počne izgledati kao regularni izraz, onda je vjerojatno vrijeme da se preuredite u namjensku metodu.

Za više savjeta provjerite naše vodič za objektno orijentirano programiranje u Pythonu i pogledajte naš vodič za FAQ za početnike u Pythonu.

Udio Udio Cvrkut E -pošta 3 načina da provjerite je li e -pošta prava ili lažna

Ako ste primili e -poruku koja izgleda pomalo sumnjivo, uvijek je najbolje provjeriti njenu autentičnost. Evo tri načina da provjerite je li e -poruka prava.

Pročitajte Dalje
Povezane teme
  • Programiranje
  • Piton
  • Vodiči za kodiranje
O autoru Joe Coburn(136 objavljenih članaka)

Joe je diplomirao računalne znanosti na Sveučilištu Lincoln, UK. On je profesionalni programer softvera, a kad ne leti bespilotnim letjelicama ili ne piše glazbu, često ga se može zateći kako fotografira ili proizvodi video zapise.

Više od Joea Coburna

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu