[Python] ์ ํธํจ์: map, filter, reduce
map, reduce, filter ์ผ์ด์ฌ๋ ์์ฆ ํจ์ํ ์ธ์ด๋ ๋ชจ๋ํ ์ธ์ด๋ค์์ ํญ์ ๋ณด์ด๋ ์น๊ตฌ๋ค์ด๋ค.
์ฌ์ค ๋ญ ์ด๋ฆ์ ๊ฑฐ์ฐฝํ๋ฐ, ๋ณ๊ฑฐ์๋ค.
map์ ๊ทธ๋ฅ ํ๋ฐํด ๋๋ ค์ ๋ค์๋ง๋ค๊ณ , reduce๋ ๋ญ์ณ์ ํ๋๋ก ๋ง๋ค๊ณ , filter๋ ๊ฑธ๋ฌ๋ด๋ ๊ฑฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฑด ๊ณตํต์ ์ผ๋ก ์์ํจ์๋ค. ๋ฐ์ ๊ฐ์ ๋ญ๊ฐ ๋ณํ๋ฅผ ์ ํ ์ฃผ์ง ์๋๋ค๋ ๊ฒ์ด๋ค. ๊ทธ์ ๊ณ์ฐํด๋ธ ๊ฒ์, ์๋ก ๋ง๋ค์ด ๋ฐํํ ๋ฟ์ด๋ค.
์ด๊ฒ๋ค์ ๋ก์ง์ด ๊ต์ฅํ ๋จ์ํด์, ์ง์๋์ง ์๋ ์ธ์ด๋ผ๋ ๋งค์ฐ ์์ฝ๊ฒ ๊ตฌํํด์ ์ธ ์ ์๋ค.
๊ทผ๋ฐ ํ์ด์ฌ์ ์ง์๋๋๊น ์๋๊ฑฐ ์ ์ฐ์
map
์ด๊ฑด ์ด๋ฆ๋ง ๋ด์๋ ์๋ฏธ๊ฐ ์ ๋งคํ๊ธด ํ๋ค.
์๋ฃ๊ตฌ์กฐ์ ์๋ฏธ๋ก ์ฐ์ด๋ map๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๊ฑด ์์๋๋ก (์ฝ๋ฐฑ, ์ฝ๋ ์
)์ ์ธ์๋ก ๋ฐ๋๋ค. ์ฝ๋ฐฑ์ ์ฝ๋ ์
์ ์์๋ฅผ ์ํํ ๊ฐ๋ค์ ์์๋๋ก ๋ฐ๊ณ , ํํ์์ ๋ฐํํ๋ค.
๊ทธ๋ผ map์ ๋ฐํ๋ ํํ์์ ๋ค์ ๋ฌถ์ด๋ค๊ฐ ๋ฐํํ๋ ๊ฒ์ด๋ค.
๋ฐ๋์งํ์ง ์์ง๋ง, ๋์ถฉ ์ด๋ ๊ฒ๋ ์ธ ์ ์๊ณ


์ ์งํ๊ฒ ๊ฐ ์์๊ฐ์ ๊ฐ๊ณตํ ์๋ ์๋ค.


filter
์ด๊ฑด ์ด๋ฆ์ด ๊ฝค ์ง๊ด์ ์ด๋ค. ๋ง ๊ทธ๋๋ก ๊ฑธ๋ฌ๋ด๋ ํจ์๋ค.
์ด๊ฑด ์ฝ๋ฐฑํจ์๊ฐ True๋ฅผ ๋ฐํํ๋ ์์๋ง ๋จ๊ธฐ๊ณ ์น ๋ ๋ ค๋ฒ๋ฆฐ๋ค.


๊ทธ๋ฆฌ๊ณ map๊ณผ filter๋ ํ์ด์ฌ 2๊น์ง๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ์ง๋ง, 3๋ถํฐ๋ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฐํํจ์ ์ ์ํ๋ค.
๋ฐ๋ผ์ ๋ฆฌ์คํธ์ฒ๋ผ ์ฐ๋ ค๋ฉด list(map(...))์ฒ๋ผ ์จ์ผํ๋ค.
reduce
ํ์ด์ฌ3๋ถํฐ ๊ตฌ์์ผ๋ก ์ซ๊ฒจ๋ ๋น์ด์ ํจ์๋ค.
ํ์ฌ ๊ธฐ๋ณธํจ์์์๋ ์ญ์ ๋๊ณ , functool ๋ชจ๋์ ์กด์ฌํ๋ค.
์ด ํจ์์ ์ฝ๋ฐฑ์ ๋์ ๊ฐ, ์์๊ฐ์ ์ธ์ 2๊ฐ๋ฅผ ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ๋ฐฑ์ ๋ฐํ๊ฐ์ ๋ค์ ํธ์ถ์์ ๋์ ๊ฐ์ผ๋ก ์ ๋ฌ๋๋ค.
๊ทธ๋์ ์ดํฉ ๋ฑ์ ๊ตฌํ ๋ ํธ๋ฆฌํ๋ค.
์๋๋ ๋ฆฌ์คํธ์ ์์๋ฅผ ์ ๋ถ ๊ณฑํ๋ ์ฝ๋๋ค.


์ฐธ์กฐ
https://stackoverflow.com/questions/13638898/how-to-use-filter-map-and-reduce-in-python-3
https://docs.python.org/3/library/functions.html