์์ง๋ ๋๋ค์์ด ์์ ์ ์ต์ด๊ฐ์ง๊ณ ์๊ณ ๋ฆฌ์ฆ 20๋ฌธ์ ํ์ด์ผ 1๋ฒ ์ธ๊น ๋ง๊น์ธ๋ฐ, ํ๋ก๊ทธ๋๋จธ์ค ํจ์จ์ฑ ๋ฌธ์ ๋๋ฌธ์ ์ข ์ข ๋๋ค์ ์จ์ผ ํ ๋๊ฐ ์์ด์ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
lambda ํํ์
lambda ๋งค๊ฐ๋ณ์: ์
์กฐ๊ฑด๋ถ ํํ์
lambda ๋งค๊ฐ๋ณ์: ์1 if ์กฐ๊ฑด์1 else ์กฐ๊ฑด์2
ex) list(map(lambda x: str(x) if x % 3 == 0 else x, a)) → a๋ผ๋ ๋ฆฌ์คํธ๊ฐ ์๋ค๊ณ ํ ๋ 3์ ๋ฐฐ์์ธ ๊ฐ๋ง ๋ฌธ์์ด๋ก ๋ณํ
โญ ์ฃผ์ โญ
- if๋ฅผ ์ฌ์ฉํ๋ค๋ฉด else๋ ๋ฐ๋์ ์์ด์ผ ํจ
- elif๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ if ~ else๋ฅผ ์ฐ์์ ์ผ๋ก ์ฌ์ฉํด์ผ ํจ
def vs lambda
# def
def plus_ten(x):
return x+10
# lambda expression
plus_ten = lambda x: x+10
∴ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ์ง๋ง ํํ ๋ฐฉ์์ด ๋ค๋ฆ
ํน์ง
- ๋๋ค์ ์์์๋ ์๋ก์ด ๋ณ์๋ฅผ ๋ง๋ค ์ ์์
(lambda x: y = 10; x + y)(1)
SyntaxError: invalid syntax
- ์ ๋ฐ์ ๋ณ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
y=10
(lambda x: x + y)(1)
# result = 11
- ๋งค๊ฐ๋ณ์๊ฐ ์๋ ํจ์๋ก ์์ฑ ๊ฐ๋ฅ : (lambda: ๋ฐํ๊ฐ)( )
(lambda : 1)()
# result = 1
x = 10
(lambda : x)()
# result = 10
map/reduce/filter
1. map(๋๋ค์, ๋ฆฌ์คํธ)
list(map(lambdax: x**2, range(5)))
# result = [0,1,4,9,16]
2. reduce(ํจ์, ๋ฌธ์์ด/ํํ/๋ฆฌ์คํธ)
from functools import reduce
reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
# result = 10
* 10์ด ๋์ค๋ ๊ณผ์
์ฒซ๋ฒ์งธ x, y : x=0, y=1 → x+y=1
๋๋ฒ์งธ x, y : x=1(์ฒซ๋ฒ์งธ ๊ณผ์ ์์ x+y์ ๊ฐ), y=2 → x+y=3
์ธ๋ฒ์งธ x, y : x=3(๋๋ฒ์งธ ๊ณผ์ ์์ x+y์ ๊ฐ), y=3 → x+y=6
๋ค๋ฒ์งธ x, y : x=6(์ธ๋ฒ์งธ ๊ณผ์ ์์ x+y์ ๊ฐ), y=4 → x+y=10
3. filter(ํจ์, ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด) : ํน์ ์กฐ๊ฑด์ ๋ง๋ ์์๋ฅผ ์ด์ฉํด ์๋ก์ด ๊ฐ์ฒด ์์ฑ
list(filter(lambda x: x > 5 and x < 10, a))
# ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด a์์ 5 ์ด๊ณผ 10 ๋ฏธ๋ง์ธ ๊ฐ๋ง ๊ฐ์ ธ์ด
sort()/sorted()
- sort()์ sorted()๊ฐ ๊ฐ์ง๊ณ ์๋ key ์ธ์์ ํจ์๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ์ ๋ ฌ ๊ธฐ์ค์ ํจ์์ ๋ฐํ๊ฐ
- ์ ๋ ฌ ๊ธฐ์ค์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ๋ ํํ ํ์์ผ๋ก ์์๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋จ
ex) sorted(ex, key = lambda x : (x[1], -x[0]))์์์ ์ ๋ ฌ ์์
โ ex์ ๋๋ฒ์งธ ์์๋ฅผ ์ด์ฉํด ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
โก ex์ ์ฒซ๋ฒ์งธ ์์๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ํ๊ฒ ๋ค๋ ์๋ฏธ
๐ ํ๋ฆฐ ๋ด์ฉ์ด๋ ์คํ๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ํธํ๊ฒ ์๋ ค์ฃผ์ธ์!
'Language' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ์์ธ ์ฒ๋ฆฌ (0) | 2021.08.19 |
---|---|
[Python] ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ (0) | 2021.08.18 |
[Python] Method #1 : method, self (0) | 2020.09.27 |