๐[Python] Lambda์ ๋ํด์โฆ
Lambda์ ๋ํด์โฆ
1. Lambda๋
Lambda๋
์๋ฏธ ์ต๋ช
ํจ์๋ฅผ ์ง์นญํ๋ ์ฉ์ด ์ฆ, ๊ธฐ์กด์ ํจ์(๋ช
๋ฑ)์ ์ ์ธํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ ๋ฐ๋ก ์ ์ํ์ฌ ์ฌ์ฉํ ์ ์๋ ํจ์๋ฅผ ๋ปํ๋ค.
1.2. ํ์
ํ์์ ์ด๋ป๊ฒ ๋ ๊น?
lambda ์ธ์ : ํํ์
๊ณผ ๊ฐ์ด ๋ํ๋ธ๋ค.
lambda x : x+1
1.3. ์ธ์ ๋ถ์ฌ
์ธ์๋ ์ด๋ป๊ฒ ๋ฃ์ด?
๋๋ค ํํ์์ ๊ดํธ๋ก ๋ฌถ์ ๋ค์ ๋ค์ ๊ดํธ๋ฅผ ๋ถ์ด๊ณ ์ธ์๋ฅผ ๋ฃ์ด ํธ์ถํ๋ค.
[์์]
(lambda x: x + 1)(1)
> 2
1.4. ์ธ์ 2๊ฐ
์ธ์๋ฅผ ๋๊ฐ ์ฌ์ฉํด๋ณด์!
lambda x,y: x+y
1.5. if๋ฌธ ์ฌ์ฉ
if๋ฌธ๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค!
check_pass = lambda x: 'pass' if x>=70 else 'fail'
2. ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด๋ณด์
key ์ธ์๋ฅผ ์ ํ์ง ์์ ๊ธฐ๋ณธ์ ์ธ sort์์ , ํํ ์์๋๋ก ์ฐ์ ์์ ๊ธฐ๋ณธ ํ ๋น
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
# ์์ ์ธ์๋ก ์ ๋ ฌ๋จ
b = sorted(a)
b = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
key ์ธ์์ ํจ์๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ์ฐ์ ์์๊ฐ ์ ํด์ง.
c = sorted(a, key = lambda x : x[0])
c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1])
d = [(3, 0), (5, 1), (0, 1), (1, 2), (5, 2)]
3. map ๋๋ค ํํ์
map์ผ๋ก๋ ๋๋ค ํํ์์ ์ฌ์ฉํ ์ ์๋ค
list(map(lambda x: x+10, [1,2,3]))
> [11, 12, 13]
4. filter()
filter()์ ๋๋ค ํํ์์ ์ฌ์ฉํ๋ฉด True๊ฐ๋ง ๋ฐํํจ!
a = [8, 4, 2, 5, 2, 7, 9, 11, 26, 13]
result = list(filter(lambda x : x > 7 and x < 15, a))
> [8, 9, 11, 13]
5. reduce() ํํ์
reduce()๋ ๊ฐ์ ๋์ ์ํจ๋ค.
from functools import reduce t = [47, 11, 42, 13]
result = reduce(lambda x, y : x + y, t)
> 113
์ฐธ๊ณ : reduce()๋ functools ๋ชจ๋์ ๋ถ๋ฌ์์ ์ฌ์ฉํ์
6. ์์
- ์ซ์ ํฌ๊ธฐ๋๋ก ์ ๋ ฌ
์๋์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ํ์.
data = [
["๊ณ ๊ตฌ๋ง",25000],
["๋ฐ๋๋",123232],
["ํ์ธ์ ํ",4500],
["๊ฐ์",3000],
["๊ธ๊ทค",6000]
]
๊ฐ๊ฒฉ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ฉด
data.sort(key = lambda x:x[1])
print(data)
## ์ถ๋ ฅ ๊ฐ
#[['๊ฐ์', 3000], ['ํ์ธ์ ํ', 4500], ['๊ธ๊ทค', 6000], ['๊ณ ๊ตฌ๋ง', 25000], ['๋ฐ๋๋', 123232]]
- ๋จ์ด ์ฌ์ ์ ์ ๋ ฌ
์๋์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ํ์.
data = ["๋๋ผ","๊ฐ๊ตฌ","๋ด","๊ฐ์","๋ํ ๋ฆฌ","๋ซ","ํน","๊ฐ์ ์์นจ","๋๋ ๋ฐฅ์ ๋จน๊ณ ์๋ค."]
๋จ์ด์ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๋ฉด
```python data.sort(key = lambda x:(len(x),x))
print(data) ```
๋๊ธ๋จ๊ธฐ๊ธฐ