[Python] ์œ ํ‹ธํ•จ์ˆ˜: map, filter, reduce

[์›๋ณธ ๋งํฌ]

map, reduce, filter ์‚ผ์ด์‚ฌ๋Š” ์š”์ฆ˜ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๋‚˜ ๋ชจ๋˜ํ•œ ์–ธ์–ด๋“ค์—์„œ ํ•ญ์ƒ ๋ณด์ด๋Š” ์นœ๊ตฌ๋“ค์ด๋‹ค.

์‚ฌ์‹ค ๋ญ ์ด๋ฆ„์€ ๊ฑฐ์ฐฝํ•œ๋ฐ, ๋ณ„๊ฑฐ์—†๋‹ค.
map์€ ๊ทธ๋ƒฅ ํ•œ๋ฐ”ํ€ด ๋Œ๋ ค์„œ ๋‹ค์‹œ๋งŒ๋“ค๊ณ , reduce๋Š” ๋ญ‰์ณ์„œ ํ•˜๋‚˜๋กœ ๋งŒ๋“ค๊ณ , filter๋Š” ๊ฑธ๋Ÿฌ๋‚ด๋Š” ๊ฑฐ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด๊ฑด ๊ณตํ†ต์ ์œผ๋กœ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋‹ค. ๋ฐ›์€ ๊ฐ’์— ๋ญ”๊ฐ€ ๋ณ€ํ™”๋ฅผ ์ „ํ˜€ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ์ € ๊ณ„์‚ฐํ•ด๋‚ธ ๊ฒƒ์„, ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•  ๋ฟ์ด๋‹ค.

์ด๊ฒƒ๋“ค์€ ๋กœ์ง์ด ๊ต‰์žฅํžˆ ๋‹จ์ˆœํ•ด์„œ, ์ง€์›๋˜์ง€ ์•Š๋Š” ์–ธ์–ด๋ผ๋„ ๋งค์šฐ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
๊ทผ๋ฐ ํŒŒ์ด์ฌ์€ ์ง€์›๋˜๋‹ˆ๊นŒ ์žˆ๋Š”๊ฑฐ ์ž˜ ์“ฐ์ž


map
์ด๊ฑด ์ด๋ฆ„๋งŒ ๋ด์„œ๋Š” ์˜๋ฏธ๊ฐ€ ์• ๋งคํ•˜๊ธด ํ•˜๋‹ค.
์ž๋ฃŒ๊ตฌ์กฐ์˜ ์˜๋ฏธ๋กœ ์“ฐ์ด๋Š” map๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๊ฑด ์ˆœ์„œ๋Œ€๋กœ (์ฝœ๋ฐฑ, ์ฝœ๋ ‰์…˜)์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค. ์ฝœ๋ฐฑ์€ ์ฝœ๋ ‰์…˜์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•œ ๊ฐ’๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ›๊ณ , ํ‘œํ˜„์‹์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๊ทธ๋Ÿผ map์€ ๋ฐ˜ํ™˜๋œ ํ‘œํ˜„์‹์„ ๋‹ค์‹œ ๋ฌถ์–ด๋‹ค๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ”๋žŒ์งํ•˜์ง„ ์•Š์ง€๋งŒ, ๋Œ€์ถฉ ์ด๋ ‡๊ฒŒ๋„ ์“ธ ์ˆ˜ ์žˆ๊ณ  image

image

์ •์งํ•˜๊ฒŒ ๊ฐ ์š”์†Œ๊ฐ’์„ ๊ฐ€๊ณตํ•  ์ˆ˜๋„ ์žˆ๋‹ค. image

image


filter
์ด๊ฑด ์ด๋ฆ„์ด ๊ฝค ์ง๊ด€์ ์ด๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ๊ฑธ๋Ÿฌ๋‚ด๋Š” ํ•จ์ˆ˜๋‹ค.
์ด๊ฑด ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์š”์†Œ๋งŒ ๋‚จ๊ธฐ๊ณ  ์‹น ๋‚ ๋ ค๋ฒ„๋ฆฐ๋‹ค. image

image

๊ทธ๋ฆฌ๊ณ  map๊ณผ filter๋Š” ํŒŒ์ด์ฌ 2๊นŒ์ง€๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, 3๋ถ€ํ„ฐ๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•จ์— ์œ ์˜ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ์“ฐ๋ ค๋ฉด list(map(...))์ฒ˜๋Ÿผ ์จ์•ผํ•œ๋‹ค.


reduce
ํŒŒ์ด์ฌ3๋ถ€ํ„ฐ ๊ตฌ์„์œผ๋กœ ์ซ“๊ฒจ๋‚œ ๋น„์šด์˜ ํ•จ์ˆ˜๋‹ค.
ํ˜„์žฌ ๊ธฐ๋ณธํ•จ์ˆ˜์—์„œ๋Š” ์‚ญ์ œ๋๊ณ , functool ๋ชจ๋“ˆ์— ์กด์žฌํ•œ๋‹ค.

์ด ํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑ์€ ๋ˆ„์ ๊ฐ’, ์š”์†Œ๊ฐ’์˜ ์ธ์ž 2๊ฐœ๋ฅผ ๋ฐ›๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜๊ฐ’์€ ๋‹ค์Œ ํ˜ธ์ถœ์‹œ์˜ ๋ˆ„์ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ์ดํ•ฉ ๋“ฑ์„ ๊ตฌํ• ๋•Œ ํŽธ๋ฆฌํ•˜๋‹ค.
์•„๋ž˜๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ์ „๋ถ€ ๊ณฑํ•˜๋Š” ์ฝ”๋“œ๋‹ค. image

image


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