Algaja juhend Pythoni lambda funktsioonide mõistmiseks

Algaja juhend Pythoni lambda funktsioonide mõistmiseks

Pythonis olevad lambad on üks kasulikumaid, olulisemaid ja huvitavamaid funktsioone. Kahjuks on neid ka lihtne valesti mõista ja eksida.





Selles artiklis selgitame kõike, mida peate nende salapäraste funktsioonide kohta teadma, kuidas neid kasutada ja miks need kasulikud on.





Enne nendesse praktilistesse näidetesse sukeldumist võiksite seadistada Pythoni virtuaalse keskkonna. Kui te isegi ei taha seda teha, peaksite vähemalt neid näiteid proovima interaktiivse veebipõhise Pythoni kestaga .





Mis on Lambda Pythonis?

Lambda on lihtsalt viis Pythonis funktsiooni määratlemiseks. Neid nimetatakse mõnikord lambdaoperaatoriteks või lambdafunktsioonideks.

Kui olete varem Pythoni kasutanud, olete tõenäoliselt oma funktsioonid määratlenud, kasutades def märksõna ja see on teie jaoks siiani hästi toiminud. Miks on siis veel üks viis sama asja tegemiseks?



Erinevus on selles, et lambda funktsioonid on anonüümsed. See tähendab, et need on funktsioonid, mida pole vaja nimetada. Neid kasutatakse väikeste ühekordsete funktsioonide loomiseks juhtudel, kui „päris” funktsioon oleks liiga suur ja mahukas.

Lambdas tagastab funktsiooniobjekti, mille saab määrata muutujale. Lambdadel võib olla suvaline arv argumente, kuid neil võib olla ainult üks avaldis. Te ei saa lambdades muid funktsioone helistada.





Kõige sagedamini kasutatakse lambda funktsioone koodis, mis nõuab lihtsat üherealist funktsiooni, kus täieliku normaalse funktsiooni kirjutamine oleks liigne. Seda käsitletakse üksikasjalikumalt allpool jaotises „Mis saab kaardist, filtreerimisest ja vähendamisest?”.

Lambdade kasutamine Pythonis

Enne lambda -funktsiooni vaatamist vaatame super -põhifunktsiooni, mis on määratletud traditsioonilisel viisil:





def add_five(number):
return number + 5

print(add_five(number=4))

See funktsioon on väga lihtne, kuid see illustreerib lambdaid. Teie oma võib olla keerulisem kui see. See funktsioon lisab viis numbrile, mis on sellele edastatud number parameeter.

See näeb välja lambda funktsioonina:

add_five = lambda number: number + 5

print(add_five(number=4))

Kasutamise asemel def , sõna lambda kasutatakse. Sulgudes pole nõutud, kuid sõna järel on kõik sõnad lambda märksõna luuakse parameetritena. Koolonit kasutatakse parameetrite ja avaldise eraldamiseks. Sel juhul on väljend number + 5 .

Ei ole vaja kasutada tagasi märksõna --- lambda teeb seda teie jaoks automaatselt.

Kahe argumendiga lambdafunktsiooni loomiseks toimige järgmiselt.

google play pood amazoni tulel
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

Kui te pole lambdade osas endiselt kindel, sukeldub järgmine jaotis ja aitab teil valgust näha.

Pythoni lambid kaardiga, filtreerimise ja vähendamisega

Pythoni põhiteegis on kolm meetodit, mida nimetatakse kaart , vähendada ja filter . Need meetodid on tõenäoliselt parimad põhjused lambda -funktsioonide kasutamiseks.

The kaart funktsioon ootab kahte argumenti: funktsiooni ja loendit. See võtab selle funktsiooni ja rakendab seda loendi igale elemendile, tagastades muudetud elementide loendi kaardiobjektina. The nimekirja funktsiooni kasutatakse saadud kaardiobjekti uuesti loendiks teisendamiseks.

Kaardi kasutamine ilma lambdaeta on järgmine.

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

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

See kaardifunktsioon on üsna mugav, kuid see võiks olla parem. the add_five funktsioon edastatakse argumendina, aga mis siis, kui te ei soovi funktsiooni iga kord kaardi kasutamisel luua? Selle asemel võite kasutada lambda!

Sama kood näeb välja ainult siis, kui funktsioon on asendatud lambdaga:

kuidas Facebookis passiivsena ilmuda
list1 = [2, 4, 6, 8]
print(list1)

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

Nagu näete, tervik add_five funktsiooni pole enam vaja. Selle asemel kasutatakse asjade korras hoidmiseks lambda funktsiooni.

Koos filter funktsioon, on protsess peaaegu sama. Filtreeri võtab funktsiooni ja rakendab seda loendi igale elemendile ning lõi uue loendi, milles on ainult need elemendid, mille tõttu funktsioon tagastab tõese.

Esiteks, ilma lambdadeta:

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)

Sellel koodil pole midagi viga, kuid see läheb natuke pikaks. Vaatame, mitu rida lambda suudab eemaldada:

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

Lambda funktsioon on asendanud vajaduse terviku järele suurem_ kui_ten_funktsioon ! Ja see on tehtud viie lihtsa sõnaga. Seetõttu on lambdad võimsad: need vähendavad lihtsate ülesannete täitmist.

Lõpuks vaatame vähendada . Reduce on veel üks lahe Pythoni funktsioon. See rakendab jooksvat arvutust kõigi loendi üksuste kohta. Selle abil saate kokku liita summa või korrutada kõik numbrid kokku:

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

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

See näide tuleb importida vähendada alates functools moodul, kuid ärge muretsege, functoolsi moodul on osa Pythoni põhiteegist.

Lugu on lambdaga peaaegu sama, funktsiooni pole vaja:

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

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

Asjad, mida Python Lambdasiga jälgida

Need näited on näidanud, kui lihtsad on lambda funktsioonid koos kaardi, filtri ja vähendamisega Pythoni põhiteegist. Siiski on mõned kasutusalad, kus lambda funktsioonid ei aita.

Kui teete midagi enamat kui põhiülesanne või soovite helistada muudele meetoditele, kasutage tavalist funktsiooni. Lambdad sobivad suurepäraselt ühekordsete anonüümsete funktsioonide jaoks, kuid neil peab olema ainult üks väljend. Kui teie lambda hakkab välja nägema nagu regulaaravaldis, on tõenäoliselt aeg pühendunud meetodile üle vaadata.

Täiendavate näpunäidete saamiseks vaadake meie objektipõhise programmeerimise juhend Pythonis ja vaadake meie KKK juhendit Pythoni algajatele.

Jaga Jaga Piiksuma E -post 3 viisi, kuidas kontrollida, kas e -kiri on tõeline või võlts

Kui olete saanud e -kirja, mis tundub pisut kahtlane, on alati parem kontrollida selle ehtsust. Siin on kolm võimalust, kuidas teada saada, kas e -kiri on tõeline.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Python
  • Kodeerimise õpetused
Autori kohta Joe Coburn(136 artiklit avaldatud)

Joe on lõpetanud arvutiteaduse Ühendkuningriigi Lincolni ülikoolis. Ta on professionaalne tarkvaraarendaja ja kui ta ei lennuta droonidega ega kirjuta muusikat, võib teda sageli leida pildistamas või videoid tootmas.

Rohkem Joe Coburnilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin