[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