Pradedančiųjų vadovas, kaip suprasti „Python Lambda“ funkcijas

Pradedančiųjų vadovas, kaip suprasti „Python Lambda“ funkcijas

Lambdas „Python“ yra viena iš naudingiausių, svarbiausių ir įdomiausių funkcijų, apie kurias reikia žinoti. Deja, juos taip pat lengva nesuprasti ir suklysti.





Šiame straipsnyje mes paaiškinsime viską, ką reikia žinoti apie šias paslaptingas funkcijas, kaip jas naudoti ir kodėl jos naudingos.





Prieš pasinerdami į šiuos praktinius pavyzdžius, galbūt norėsite sukurti „Python“ virtualią aplinką. Jei net nenorite to daryti, turėtumėte bent jau išbandyti šiuos pavyzdžius su interaktyviu internetiniu „Python“ apvalkalu .





Kas yra lambda Python?

Lambda yra tiesiog būdas apibrėžti funkciją „Python“. Jie kartais žinomi kaip „lambda operatoriai“ arba „lambda funkcijos“.

Jei anksčiau naudojote „Python“, tikriausiai apibrėžėte savo funkcijas naudodami def raktinį žodį, ir iki šiol jis jums puikiai pasiteisino. Taigi kodėl yra kitas būdas tą patį padaryti?



Skirtumas tas, kad lambda funkcijos yra anoniminės. Tai reiškia, kad tai yra funkcijos, kurių nereikia įvardyti. Jie naudojami mažoms vienkartinėms funkcijoms kurti tais atvejais, kai „tikroji“ funkcija būtų per didelė ir nepatogi.

Lambdas grąžina funkcijos objektą, kurį galima priskirti kintamajam. Lambdas gali turėti bet kokį argumentų skaičių, tačiau jie gali turėti tik vieną išraišką. Negalite skambinti kitomis funkcijomis lambdas.





Dažniausiai lambda funkcijoms naudojamas kodas, kuriam reikia paprastos vienos eilutės funkcijos, kur parašyti visą įprastą funkciją būtų per daug. Tai išsamiau aprašyta žemiau, „Kaip apie žemėlapį, filtravimą ir mažinimą?“.

Kaip naudoti „Lambdas“ „Python“

Prieš žiūrėdami į lambda funkciją, pažvelkime į pagrindinę funkciją, apibrėžtą „tradiciniu“ būdu:





def add_five(number):
return number + 5

print(add_five(number=4))

Ši funkcija yra labai paprasta, tačiau ji iliustruoja lambda. Jūsų gali būti sudėtingesnis nei šis. Ši funkcija prideda penkis prie bet kurio numerio, perduoto per skaičius parametras.

Štai kaip ji atrodo kaip lambda funkcija:

add_five = lambda number: number + 5

print(add_five(number=4))

Užuot naudojęs def , žodis lambda yra naudojamas. Nereikia jokių skliaustų, bet bet kokie žodžiai po lambda raktiniai žodžiai yra sukurti kaip parametrai. Dvitaškis naudojamas parametrams ir išraiškai atskirti. Šiuo atveju išraiška yra skaičius + 5 .

Nereikia naudoti grįžti raktažodis --- lambda tai daro už jus automatiškai.

Štai kaip sukurti lambda funkciją su dviem argumentais:

„Windows 10“ mėlynojo ekrano kritinis procesas mirė
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

Jei vis dar nesate tikri dėl lambdų taško, kitas skyrius pasiners ir padės pamatyti šviesą.

„Python Lambdas“ su žemėlapiu, filtravimu ir mažinimu

Pagrindinėje „Python“ bibliotekoje yra trys metodai, vadinami žemėlapis , sumažinti , ir filtras . Šie metodai yra galbūt geriausia priežastis naudoti lambda funkcijas.

The žemėlapis funkcija tikisi dviejų argumentų: funkcijos ir sąrašo. Ji perima šią funkciją ir taiko ją kiekvienam sąrašo elementui, grąžindama pakeistų elementų sąrašą kaip žemėlapio objektą. The sąrašą funkcija naudojama gautam žemėlapio objektui vėl paversti sąrašu.

Štai kaip naudoti žemėlapį be 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)

Ši žemėlapio funkcija yra gana patogi, tačiau ji galėtų būti geresnė. į add_five funkcija perduodama kaip argumentas, bet ką daryti, jei nenorite sukurti funkcijos kiekvieną kartą, kai naudojate žemėlapį? Vietoj to galite naudoti lambda!

Štai kaip atrodo tas pats kodas, tik pakeitus funkciją lambda:

Kaip atsisiųsti programas į „Samsung“ išmanųjį televizorių
list1 = [2, 4, 6, 8]
print(list1)

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

Kaip matote, visuma add_five funkcija nebereikalinga. Vietoj to, „lambda“ funkcija naudojama tvarkingai tvarkyti.

Su filtras funkcija, procesas yra beveik tas pats. Filtras paima funkciją ir taiko ją kiekvienam sąrašo elementui ir sukuria naują sąrašą tik su elementais, dėl kurių funkcija grąžina „True“.

Pirma, be 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)

Šiame kodekse nėra nieko blogo, tačiau jis tampa šiek tiek ilgesnis. Pažiūrėkime, kiek eilučių gali pašalinti lambda:

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

Lambda funkcija pakeitė visumos poreikį Didesnis_tiek_ten_funkcija ! Ir tai padaryta penkiais paprastais žodžiais. Štai kodėl lambdas yra galingas: sumažina netvarką atliekant paprastas užduotis.

Galiausiai, pažvelkime sumažinti . Sumažinti yra dar viena puiki „Python“ funkcija. Jis taiko slenkantį skaičiavimą visiems sąrašo elementams. Tai galite naudoti, kad susumuotumėte bendrą sumą arba padaugintumėte visus skaičius kartu:

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

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

Šį pavyzdį reikia importuoti sumažinti nuo functools modulį, bet nesijaudinkite, „functools“ modulis yra „Python“ pagrindinės bibliotekos dalis.

Su lambda istorija yra tokia pati, nereikia jokios funkcijos:

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

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

Į ką atkreipti dėmesį naudojant „Python Lambdas“

Šie pavyzdžiai parodė, kaip paprasta „lambda“ funkcija kartu su žemėlapiu, filtru ir sumažinimu iš „Python“ pagrindinės bibliotekos. Vis dėlto yra keletas naudojimo būdų, kai lambda funkcijos nepadeda.

Jei darote ką nors daugiau nei pagrindinę užduotį arba norite paskambinti kitais metodais, naudokite įprastą funkciją. Lambdas puikiai tinka vienkartinėms, anoniminėms funkcijoms, tačiau jos turi turėti tik vieną išraišką. Jei jūsų lambda pradeda atrodyti kaip įprasta išraiška, tikriausiai atėjo laikas vėl pereiti prie tam skirto metodo.

Norėdami gauti daugiau patarimų, patikrinkite mūsų Objektinio programavimo „Python“ vadovas ir peržiūrėkite mūsų DUK vadovą pradedantiesiems „Python“.

Dalintis Dalintis „Tweet“ Paštu 3 būdai, kaip patikrinti, ar el

Jei gavote el. Laišką, kuris atrodo šiek tiek abejotinas, visada geriausia patikrinti jo autentiškumą. Štai trys būdai, kaip sužinoti, ar el.

Skaityti toliau
Susijusios temos
  • Programavimas
  • Python
  • Kodavimo pamokos
Apie autorių Joe Coburn(Paskelbti 136 straipsniai)

Joe yra baigęs informatikos studijas Linkolno universitete, JK. Jis yra profesionalus programinės įrangos kūrėjas, o kai neskraido bepiločiais orlaiviais ir nerašo muzikos, jį dažnai galima rasti fotografuojant ar kuriant vaizdo įrašus.

Daugiau iš Joe Coburn

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia