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 halutaan määrittää funktio suoraan paikallisesti.
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 laajaa 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ää ehtolauseen 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ö sisäänrakennettujen funktioiden kanssa
Yleinen käyttötapa 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 myös käyttää 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
Funktio max(a, b) vertailee kahta lukua ja palauttaa suuremman. Kun yhdistät muuttujan arvoon 0, kuten max(x, 0), se toimii turvaverkkona negatiivisia lukuja vastaan:
-
Jos
xon positiivinen (esim. 100),max(100, 0)palauttaa 100, koska 100 on suurempi kuin 0; -
Jos
xon negatiivinen (esim. -50),max(-50, 0)palauttaa 0, koska 0 on suurempi kuin -50.
Tämä poistaa tarpeen monimutkaiselle if-else-rakenteelle, kun haluat pakottaa negatiivisen tai virheellisen arvon välittömästi nollaksi.
Lambda-funktiot soveltuvat parhaiten lyhyisiin, yksirivisiin lausekkeisiin. Jos funktiosi tarvitsee useita rivejä tai monimutkaisempaa 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ä listan käsittelyä (list comprehension) soveltaaksesi
apply_taxjokaiseenprices-listan alkioon.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme