Aloittelijan opas Python Lambda -toimintojen ymmärtämiseen

Aloittelijan opas Python Lambda -toimintojen ymmärtämiseen

Pythonin lambdat ovat yksi hyödyllisimmistä, tärkeimmistä ja mielenkiintoisimmista ominaisuuksista. Valitettavasti ne on myös helppo ymmärtää väärin ja erehtyä.





Tässä artikkelissa aiomme selittää kaiken, mitä sinun tarvitsee tietää näistä salaperäisistä toiminnoista, niiden käytöstä ja miksi ne ovat hyödyllisiä.





Ennen kuin sukellat näihin käytännön esimerkkeihin, sinun kannattaa ehkä määrittää Python -virtuaalinen ympäristö. Jos et edes halua tehdä sitä, sinun pitäisi ainakin kokeilla näitä esimerkkejä interaktiivisella online -Python -kuorella .



Mikä on Lambda Pythonissa?

Lambda on yksinkertaisesti tapa määrittää funktio Pythonissa. Niitä kutsutaan joskus lambda -operaattoreiksi tai lambda -funktioiksi.

Jos olet käyttänyt Pythonia aiemmin, olet luultavasti määritellyt toiminnot käyttämällä def avainsana, ja se on toiminut hyvin tähän asti. Joten miksi on olemassa toinen tapa tehdä sama asia?



Erona on, että lambda -toiminnot ovat nimettömiä. Eli ne ovat toimintoja, joita ei tarvitse nimetä. Niitä käytetään luomaan pieniä kertaluonteisia toimintoja tapauksissa, joissa 'todellinen' toiminto olisi liian suuri ja tilaa vievä.

Lambdat palauttavat funktio -objektin, joka voidaan liittää muuttujaan. Lambdalla voi olla mikä tahansa määrä argumentteja, mutta niillä voi olla vain yksi lauseke. Et voi kutsua muita toimintoja lambdan sisällä.





Yleisin käyttö lambda-funktioissa on koodissa, joka vaatii yksinkertaisen yksirivisen funktion, jolloin täydellisen normaalin funktion kirjoittaminen olisi liikaa. Tästä kerrotaan tarkemmin alla kohdassa Entä kartta, suodatin ja pienennys?

Lambdan käyttö Pythonissa

Ennen kuin tarkastellaan lambda -funktiota, katsotaan superperustoimintoa, joka on määritelty perinteisellä tavalla:





def add_five(number):
return number + 5

print(add_five(number=4))

Tämä toiminto on hyvin yksinkertainen, mutta se havainnollistaa lambdaa. Sinun voi olla monimutkaisempi kuin tämä. Tämä toiminto lisää viisi mihin tahansa numeroon, joka on välitetty sille määrä parametri.

Tältä se näyttää lambda -funktiona:

add_five = lambda number: number + 5

print(add_five(number=4))

Sen sijaan käyttää def , sana lambda käytetään. Hakasulkeita ei tarvita, mutta kaikki seuraavat sanat lambda avainsana luodaan parametreiksi. Kaksoispistettä käytetään erottamaan parametrit ja lauseke. Tässä tapauksessa ilmaisu on numero + 5 .

Ei ole tarvetta käyttää palata avainsana --- lambda tekee tämän puolestasi automaattisesti.

Näin voit luoda lambda -funktion kahdella argumentilla:

kuinka pienentää jpeg -tiedostoja
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

Jos olet edelleen epävarma lambdasta, seuraava osa sukeltaa ja auttaa sinua näkemään valon.

Python Lambdas kartalla, suodattimella ja pienentämisellä

Python -ydinkirjastossa on kolme menetelmää, joita kutsutaan kartta , vähentää ja suodattaa . Nämä menetelmät ovat ehkä paras syy käyttää lambda -toimintoja.

The kartta funktio odottaa kahta argumenttia: funktion ja luettelon. Se ottaa kyseisen toiminnon käyttöön ja soveltaa sitä kaikkiin luettelon elementteihin palauttaen muokattujen elementtien luettelon karttaobjektina. The lista -toimintoa käytetään tuloksena olevan karttaobjektin muuntamiseen takaisin luetteloksi.

Näin voit käyttää karttaa ilman lambdaa:

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

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

Tämä karttatoiminto on varsin kätevä, mutta se voisi olla parempi. the add_five funktio annetaan argumenttina, mutta entä jos et halua luoda funktiota joka kerta, kun käytät karttaa? Voit käyttää lambdaa sen sijaan!

Sama koodi näyttää tältä, vain kun toiminto korvataan lambdalla:

miten ladata sovellus samsung tv: stä
list1 = [2, 4, 6, 8]
print(list1)

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

Kuten näette, koko add_five toimintoa ei enää tarvita. Sen sijaan lambda -toimintoa käytetään pitämään asiat siistinä.

Kanssa suodattaa toiminto, prosessi on pitkälti sama. Suodattaa ottaa funktion ja soveltaa sitä kaikkiin luettelon elementeihin ja loi uuden luettelon, jossa on vain elementit, jotka saivat funktion palauttamaan True.

Ensinnäkin ilman lambdia:

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)

Tässä koodissa ei ole mitään vikaa, mutta siitä tulee hieman pitkä. Katsotaanpa kuinka monta riviä lambda voi poistaa:

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

Lambda -toiminto on korvannut kokonaisuuden tarpeen suurempi_ kuin_ten_toiminto ! Ja se on tehty viidellä yksinkertaisella sanalla. Siksi lambdat ovat tehokkaita: ne vähentävät sotkua yksinkertaisissa tehtävissä.

Lopuksi, katsotaanpa vähentää . Reduce on toinen hieno Python -toiminto. Se soveltaa liukuvaa laskentaa kaikkiin luettelon kohteisiin. Voit käyttää tätä summan laskemiseen tai kertoa kaikki numerot yhteen:

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

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

Tämä esimerkki on tuotava vähentää alkaen functools moduuli, mutta älä huoli, functools -moduuli on osa Python -ydinkirjastoa.

Tarina on pitkälti sama lambdan kanssa, toimintoa ei tarvita:

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

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

Python Lambdasin avulla kannattaa varoa

Nämä esimerkit ovat osoittaneet, kuinka helppoja lambda -toiminnot ovat yhdessä kartan, suodattimen ja pienentämisen kanssa Python -ydinkirjastosta. Silti on olemassa muutamia käyttötarkoituksia, joissa lambda -toiminnot eivät auta.

Jos teet muuta kuin perustehtävän tai haluat käyttää muita menetelmiä, käytä normaalia toimintoa. Lambdat sopivat erinomaisesti yksittäisiin, nimettömiin toimintoihin, mutta niillä saa olla vain yksi lauseke. Jos lambda alkaa näyttää säännölliseltä lausekkeelta, on todennäköisesti aika palata omaan menetelmään.

Lisää vinkkejä löydät meidän opas olio-ohjelmointiin Pythonissa ja tutustu usein kysyttyihin kysymyksiin Python -aloittelijoille.

Jaa Jaa Tweet Sähköposti 3 tapaa tarkistaa, onko sähköposti oikea tai väärennetty

Jos olet saanut sähköpostin, joka näyttää hieman epäilyttävältä, on aina parasta tarkistaa sen aitous. Tässä on kolme tapaa kertoa, onko sähköposti oikea.

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Python
  • Koodausoppaat
Kirjailijasta Joe Coburn(136 artikkelia julkaistu)

Joe on valmistunut tietojenkäsittelytieteestä Lincolnin yliopistosta Iso -Britanniasta. Hän on ammattimainen ohjelmistokehittäjä, ja kun hän ei lentä droneilla tai kirjoita musiikkia, hänet voidaan usein ottaa valokuvista tai videoista.

Lisää Joe Coburnilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi