Lambda-funktiot
Pyyhkäise näyttääksesi valikon
Lambda-funktiot ovat Pythonin keskeinen ominaisuus, jonka avulla voidaan luoda pieniä, anonyymejä funktioita tiiviillä syntaksilla. Lambda-funktion päätarkoitus on määritellä funktio yhdellä rivillä, tyypillisesti lyhyitä, kertaluonteisia käyttötapauksia varten, joissa täysi funktion määrittely def-avainsanalla olisi tarpeettoman monimutkaista.
Lambda-funktioita käytetään useimmiten yhdessä korkeamman asteen funktioiden, kuten map, filter ja sorted, kanssa, kun funktio täytyy välittää argumenttina mutta erillisen funktion määrittely koodin muualle ei ole tarpeen.
Lambda-funktio voi ottaa minkä tahansa määrän argumentteja, mutta siinä saa olla vain yksi lauseke. Tämän lausekkeen tulos palautetaan automaattisesti. Vaikka lambda-funktiot ovat hyödyllisiä nopeiden, kertakäyttöisten funktioiden luomiseen, niillä on rajoituksia: ne eivät voi sisältää useita lauseita, sijoituksia tai monimutkaista logiikkaa, ja niiden liiallinen käyttö heikentää luettavuutta. Näistä rajoituksista johtuen lambda-funktioita kannattaa käyttää yksinkertaisiin tehtäviin ja suosia tavallisia funktioita monimutkaisemmissa operaatioissa.
123numbers = [1, 2, 3, 4, 5] squared = list(map(lambda x: x ** 2, numbers)) print(squared)
Yllä oleva koodi käyttää lambda-funktiota yhdessä map-korkeamman asteen funktion kanssa korottaakseen jokaisen luvun listassa numbers toiseen potenssiin. lambda x: x ** 2 määrittelee anonyymin funktion, joka ottaa yhden argumentin x ja palauttaa sen neliön. Tämä lähestymistapa mahdollistaa yksinkertaisen operaation nopean soveltamisen jokaiselle listan alkiolle ilman erillisen nimettyn funktion määrittelyä, tehden koodista tiiviimpää ja selkeämpää silloin, kun funktiota tarvitaan vain kerran.
123numbers = [1, 2, 3, 4, 5, 6] evens = list(filter(lambda x: x % 2 == 0, numbers)) print(evens)
Tässä esimerkissä käytetään lambda-funktiota yhdessä filter-funktion kanssa poimimaan vain parilliset luvut numbers-listasta. Lambda-funktion käyttö tekee suodatuslogiikasta ytimekkään ja helposti luettavan, erityisesti silloin kun tarvitset vain yksinkertaisen tarkistuksen ilman erillisen nimettyn funktion luomista.
1. Mikä on tärkein ero lambda-funktion ja tavallisen funktion välillä?
2. Milloin kannattaa käyttää lambda-funktiota def:n sijaan?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme