single
Lambda-funktiot
Pyyhkäise näyttääksesi valikon
Lambda-funktiot ovat anonyymejä funktioita, eli niillä ei ole nimeä. Ne luodaan käyttämällä lambda-avainsanaa ja niitä käytetään usein lyhyiden funktioiden määrittelyyn, kun funktio halutaan määritellä suoraan paikan päällä.
Lambda-funktion perussyntaksi on seuraava:
lambda arguments: expression
lambda: avainsana, joka ilmaisee lambda-funktion määrittelyn alun;arguments: lista argumenteista, jotka funktio ottaa vastaan;expression: lauseke, joka suoritetaan funktion kutsun yhteydessä. Lausekkeen tulos palautetaan funktion arvona.
Lambda-funktioiden keskeinen ominaisuus on niiden tiivis syntaksi. Ne ovat käteviä, kun tarvitaan yksinkertainen funktio ilman ylimääräistä koodia.
Yksi ja useampi argumentti
Lambda-funktio voi ottaa yhden tai useamman argumentin:
1234567# Single argument square = lambda x: x**2 print(square(5)) # 25 # Multiple arguments add = lambda x, y: x + y print(add(3, 5)) # 8
Ehdollinen logiikka lambda-funktioissa
Ternääristä lauseketta voidaan käyttää ehdollisen logiikan lisäämiseen lambda-funktioon:
123is_even = lambda x: "even" if x % 2 == 0 else "odd" print(is_even(4)) # "even" print(is_even(7)) # "odd"
Lambda-funktion käyttäminen sisäänrakennettujen funktioiden kanssa
Yleinen käyttötapaus on yhdistää lambda-funktioita sisäänrakennettuihin funktioihin, kuten map() ja filter():
123456789prices = [100, 200, 300] # Apply 10% discount to each price discounted = list(map(lambda price: price * 0.9, prices)) print(discounted) # [90.0, 180.0, 270.0] # Keep only prices above 150 expensive = list(filter(lambda price: price > 150, prices)) print(expensive) # [200, 300]
Voit käyttää myös max()-funktiota lambdan sisällä käsitelläksesi poikkeustapaukset suoraan lausekkeessa:
123safe_value = lambda x: max(x, 0) # Returns 0 if x is negative print(safe_value(-5)) # 0 print(safe_value(10)) # 10
Lambda-funktiot soveltuvat parhaiten lyhyisiin, yksittäisiin lausekkeisiin perustuviin loogisiin toimintoihin. Jos funktio vaatii useita rivejä tai monimutkaista logiikkaa, tavallinen def-funktio on parempi valinta.
Pyyhkäise aloittaaksesi koodauksen
On olemassa hintaluettelo (prices), ja tulee toteuttaa lambda-lauseke, joka ottaa hinnan parametrina ja vähentää siitä 13 % veron.
- Määrittele lambda-lauseke käyttäen
lambda-avainsanaa. - Lambda-lausekkeen tulee ottaa yksi parametri (
price). - Jos
priceon negatiivinen, pidä sitä virheellisenä ja palauta 0 käyttämällämax()-funktiota suoraan lambda-lausekkeessa. - Lambdan tulee ensin tarkistaa hinta ja sitten vähentää 13 % kelvollisesta summasta.
- Käytä list comprehensionia soveltaaksesi
apply_taxjokaiseen alkioonprices-listassa.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme