-
04. Lambda๋ฅผ ๋น๋กฏํ ์ฌ๋ฌ ํจ์
[DF913] ํ์ด์ฌ ๊ธฐ์ด ํ๋ จ 10์ : ๋คํ, ๋ฐ์ดํฐ์ฌ์ด์ธ์ค ์ฐ์ต๋ฌธ์
๐ฅ ๋ฌธ์ ์ค๋ช ํ์ด์ฌ์ ๊ธฐ์ด ๋ฌธ๋ฒ์ ํ๋ จํ ์ ์๋ ๊ธฐ๋ณธ ์ฐ์ต๋ฌธ์ 10์ ์ ๋๋ค. (ver.3.6.) ๐ฅ ์ถ์ฒ ๋์ ๋ฐ ํ์ต ๋ชฉํํ์ด์ฌ ๊ณต๋ถ๋ฅผ ์ต๊ทผ์ ์์ํ๊ฑฐ๋ ๋ง์น ์.→ ์ด ๋์ด๋ ์์ค์ ํด๊ฒฐํด๋ผ ์ ์๋๋ก ๊ณต๋ถํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.("๋ด๊ฐ ์ต๊ทผ์ ํ์ด์ฌ์ ๊ณต๋ถํ๋๋ฐ, ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๊น?")ํ์ด์ฌ ๊ธฐ์ด ๋ฌธ๋ฒ์ ๋ค์ ์ฐ์ต ๋ฐ ๋ณต์ตํด์ผํ ํ์์ฑ์ ๋๋ผ๋ ์.→ ํ์ด์ฌ์ ๊ธฐ์ด์ ์ธ ๋ด์ฉ์ ํ๋ จํจ์ผ๋ก์จ, ์๋ จ๋๋ฅผ ๋์ด๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํฉ๋๋ค.๐ฅ ๋์ด๋โ
www.dafit.me
Lambda....... ์์ ์์๋ ์ด๊ฑธ ๊ทธ๋ฅ ๋๊ฒผ๋ ๊ฑฐ ๊ฐ๊ณ ์ค์ ๋ก ๋ฐ๋ก ๊ณต๋ถํ ๋๋ ๋ญ ์๋ฆฐ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ๊ทธ๋ฅ ๋๊ฒผ์๋๋ฐ Lambda๋ฅผ ์ด์ฉํด์ ํธ๋ ๋ฌธ์ ๊ฐ ๋์๋ค. ์ด์ ๋ ํผํ์ง ๋ง๊ณ ๋ค์ ๋ณผ ๋๊ฐ ์๋ค.
์ด ๋ฌธ์ ์์๋ 4๊ฐ์ ํจ์๋ฅผ ์ํ๋๋ฐ, ์ผ๋จ 4๊ฐ์ง ํจ์๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
(1) list()
์ธ์๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฐ๊ฟ์ฃผ๋ ํจ์๋ค.
(2) filter(function, iterable)
์ด๋ฆ๊ณผ ๋น์ทํ๊ฒ ์ฌ์ฉ์๊ฐ ์ํ๋ ์กฐ๊ฑด์ ๋ง์ถฐ์ '๊ฑธ๋ฌ'์ฃผ๋ ํจ์๋ค.
์ธ์๋ก 2๊ฐ์ง๊ฐ ํ์ํ๋ฐ ์กฐ๊ฑด๊ณผ iterableํ ๋ฐ์ดํฐ๋ค.
์กฐ๊ฑด์ ํจ์๋ฅผ ์ ์ํ๊ฑฐ๋, lambda๋ฅผ ์ด์ฉํด์ ์ค์ ํด ์ค ์ ์๋ค.
https://bluese05.tistory.com/66
python - filter ํจ์. ์ด๋ ต์ง ์์์
python - filter() filter ํจ์๋ built-in ํจ์๋ก list ๋ dictionary ๊ฐ์ iterable ํ ๋ฐ์ดํฐ๋ฅผ ํน์ ์กฐ๊ฑด์ ์ผ์นํ๋ ๊ฐ๋ง ์ถ์ถํด ๋ผ๋ ์ฌ์ฉํ๋ ํจ์์ด๋ค. ๋จผ์ , python docs ์ filter ์ ๋ํ ์ ์๋ฅผ ๋ณด๋ฉด..
bluese05.tistory.com
(3) Lambda
lambda ๋งค๊ฐ๋ณ์๋ค : ์
ํ์์ผ๋ก ์ฌ์ฉํ๋ค.
๊ฐ๋จํ๊ฒ ์ผํ์ฑ ํจ์๋ฅผ ๋ง๋ค ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ธ์๋ก ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
๋ ์์ธํ ์ค๋ช ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข๋ค.
https://dojang.io/mod/page/view.php?id=2359
ํ์ด์ฌ ์ฝ๋ฉ ๋์ฅ: 32.1 ๋๋ค ํํ์์ผ๋ก ํจ์ ๋ง๋ค๊ธฐ
Unit 32. ๋๋ค ํํ์ ์ฌ์ฉํ๊ธฐ ์ง๊ธ๊น์ง def๋ก ํจ์๋ฅผ ์ ์ํด์ ์ฌ์ฉํ์ต๋๋ค. ์ด๋ฒ์๋ ๋๋ค ํํ์์ผ๋ก ์ต๋ช ํจ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋๋ค ํํ์์ ์ ํํ๋ก ๋์ด ์๋ค๊ณ ํด์ ๋๋ค ํํ์(lambda expression)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ํนํ ๋๋ค ํํ์์ ํจ์๋ฅผ ๊ฐํธํ๊ฒ ์์ฑํ ์ ์์ด์ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ๋ฃ์ ๋ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. 32.1 ๋๋ค ํํ์์ผ๋ก ํจ์ ๋ง๋ค๊ธฐ ๋๋ค ํํ์์ ์ฌ์ฉํ๊ธฐ ์ ์ ๋จผ์ ์ซ์๋ฅผ ๋ฐ์ ๋ค 10์ ๋ํด
dojang.io
(4) map(function, iterable)
์๋ณธ ๋ฆฌ์คํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ์ ๋ฆฌ์คํธ๋ฅผ ์์ฑํด์ ๋ฆฌ์คํธ์ ์์๋ฅผ ์ง์ ๋ ํจ์๋ก ์ฒ๋ฆฌํด ์ฃผ๋ ํจ์๋ค.
https://dojang.io/mod/page/view.php?id=2286
ํ์ด์ฌ ์ฝ๋ฉ ๋์ฅ: 22.6 ๋ฆฌ์คํธ์ map ์ฌ์ฉํ๊ธฐ
์ด๋ฒ์๋ ๋ฆฌ์คํธ์ map์ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค. map์ ๋ฆฌ์คํธ์ ์์๋ฅผ ์ง์ ๋ ํจ์๋ก ์ฒ๋ฆฌํด์ฃผ๋ ํจ์์ ๋๋ค(map์ ์๋ณธ ๋ฆฌ์คํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ ๋ฆฌ์คํธ๋ฅผ ์์ฑํฉ๋๋ค). list(map(ํจ์, ๋ฆฌ์คํธ)) tuple(map(ํจ์, ํํ)) ์๋ฅผ ๋ค์ด ์ค์๊ฐ ์ ์ฅ๋ ๋ฆฌ์คํธ๊ฐ ์์ ๋ ์ด ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ฅผ ์ ์๋ก ๋ณํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๋จผ์ for ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ ๋ณํํด๋ณด๊ฒ ์ต๋๋ค. >>> a = [1.2, 2.5, 3.7, 4.6] >>> for
dojang.io
์ด์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณผ ์๊ฐ์ด๋ค.
์ ๋ค ๊ฐ์ง ํจ์๋ฅผ ์ ์กฐํฉํด ๋ณด์.
๋จผ์ foo ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ค๋ค.
foo = [1,38,23,9,5,2]
์กฐ๊ฑด์ ์ดํด๋ณด๋ฉด ๋ ๊ฐ์ง๊ฐ ์๋ค.
1. 20๋ณด๋ค ํฐ ์๋ง ๋จ๊ธด๋ค.
2. 2๋ฅผ ๊ณฑํ๋ค.
๋จผ์ ์กฐ๊ฑด 1์ ์คํํด๋ณด์.
filted_foo = filter(lambda x:(x>20)==1, foo)
filterํจ์๋ฅผ ์ด์ฉํด์ foo์์ ์ํ๋ ์กฐ๊ฑด์ ์ธ์๋ง ์ด์ฉํด์ ์๋กญ๊ฒ filted_foo๋ฅผ ๋ง๋ค์ด ์ฃผ์๋ค.
์กฐ๊ฑด์ ๋ฃ์ ๋์๋ lambda ํจ์๋ฅผ ์ด์ฉํ๋ค. lambda์ ๊ฒฐ๊ด๊ฐ์ด T๊ฐ ๋์ค๋ ์ธ์๋ง์ ๋ชจ์์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.
bar = list(map(lambda x:x*2, filted_foo))
map์ ์ด์ฉํด์ ๋ฆฌ์คํธ์ ์ธ์๋ค์ 2๋ฅผ ๊ณฑํด์ค๋ค. 2๋ฅผ ๊ณฑํด์ฃผ๋ ํจ์๋ lambda๋ฅผ ์ด์ฉํด์ ๋ง๋ค์๋ค.
๋ง์ง๋ง์ผ๋ก list๋ฅผ ์ด์ฉํด์ ์ธ์๋ค์ list๋ก ๋ฌถ์ด์ฃผ๋ฉด ๋๋ค.
print(bar)
[76, 46] ๊ฒฐ๊ณผ๊ฐ์ด ์ ๋์ค๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
์ฌ๋ฌ ํจ์๋ฅผ ์ ์์ด ์ฐ๋ ๊ฒ ๋ ํ์ด์ฌ์ ๋ฌ๋ฏธ์ธ ๊ฑฐ ๊ฐ๋ค. ๊ทธ๋ฐ๋ฐ ๊ณ์ ์ด๋ค ํจ์๊ฐ ๋ฌด์จ ๊ธฐ๋ฅ์ด ์๊ณ , ์ด๋ฐ ๋ฐฉ์์ ์ฐ์ตํ์ง ์์ผ๋ฉด ๋ฐ๋ก๋ฐ๋ก ๋ ์ค๋ฅด์ง ์์ ๋งํ ์์ด๋์ด๋ค. ์ฐ์ตํด์ผ๊ฒ ๋ค......
'๐STUDY > ๐๋คํ (dafit.me)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DF913] 06. 369 ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ (0) 2020.02.10 [DF913] 05. ๋์๋ฌธ์ ๋ณํ (0) 2020.02.10 [DF913] 03. ๋ ๋ฒ์งธ๋ก ๊ฐ์ฅ ํฐ ์ (0) 2020.02.10 [DF913] 02. ๋ช ๋ น ์ธ์๋ก ์ซ์์ ์ดํฉ ๊ตฌํ๊ธฐ (0) 2020.02.10 [DF913] 01. ๋๊ฐ์ง ์ถ๋ ฅ ๋ฐฉ์ (0) 2020.02.10 ๋๊ธ