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 tilanteissa, joissa funktio halutaan määritellä nopeasti 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ö sisäänrakennettujen funktioiden kanssa
Yleinen käyttötapaus on lambda-funktioiden yhdistäminen 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
Funktio max(a, b) vertaa kahta lukua ja palauttaa suuremman. Kun yhdistät muuttujan ja luvun 0 - kuten max(x, 0) - se toimii turvaverkkona negatiivisia lukuja vastaan:
-
Jos x on positiivinen (esim. 100),
max(100, 0)palauttaa 100, koska 100 on suurempi kuin 0. -
Jos x on negatiivinen (esim. -50),
max(-50, 0)palauttaa 0, koska 0 on suurempi kuin -50.
Tämä poistaa tarpeen monimutkaiselle if-else-rakenteelle, kun haluat muuttaa negatiivisen tai virheellisen arvon välittömästi nollaksi.
Lambda-funktiot soveltuvat parhaiten lyhyisiin, yksirivisiin lausekkeisiin. Jos funktiosi tarvitsee 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_taxjokaiseenprices-listan alkioon.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme