Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Lambda-funktiot | Rekurssio ja Lambda-Funktiot
Python-Funktioiden Opas
Osio 5. Luku 4
single

single

bookLambda-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
copy

Ehdollinen logiikka lambda-funktioissa

Ternääristä lauseketta voidaan käyttää ehdollisen logiikan lisäämiseen lambda-funktioon:

123
is_even = lambda x: "even" if x % 2 == 0 else "odd" print(is_even(4)) # "even" print(is_even(7)) # "odd"
copy

Lambda-funktion käyttäminen sisäänrakennettujen funktioiden kanssa

Yleinen käyttötapaus on yhdistää lambda-funktioita sisäänrakennettuihin funktioihin, kuten map() ja filter():

123456789
prices = [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]
copy

Voit käyttää myös max()-funktiota lambdan sisällä käsitelläksesi poikkeustapaukset suoraan lausekkeessa:

123
safe_value = lambda x: max(x, 0) # Returns 0 if x is negative print(safe_value(-5)) # 0 print(safe_value(10)) # 10
copy
lambda
Note
Huomio

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.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

On olemassa hintaluettelo (prices), ja tulee toteuttaa lambda-lauseke, joka ottaa hinnan parametrina ja vähentää siitä 13 % veron.

  1. Määrittele lambda-lauseke käyttäen lambda-avainsanaa.
  2. Lambda-lausekkeen tulee ottaa yksi parametri (price).
  3. Jos price on negatiivinen, pidä sitä virheellisenä ja palauta 0 käyttämällä max()-funktiota suoraan lambda-lausekkeessa.
  4. Lambdan tulee ensin tarkistaa hinta ja sitten vähentää 13 % kelvollisesta summasta.
  5. Käytä list comprehensionia soveltaaksesi apply_tax jokaiseen alkioon prices-listassa.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 4
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt