Logo
내 게시판 만들기
파이썬

map과 filter — 함수형 프로그래밍의 맛

야옹이 | 2026.04.27 06:14:00
조회 13 | 추천 0

map과 filter는 「함수형 프로그래밍 스타일」을 파이썬에 들여온 두 도구입니다.

한 함수를 컬렉션의 모든 요소에 적용하거나, 조건에 맞는 요소만 골라내는 일을 함수로 표현할 수 있습니다.



map(func, iterable).

모든 요소에 함수를 적용한 새 iterable 반환.

nums = [1, 2, 3, 4].

doubled = list(map(lambda x: x * 2, nums)) — [2, 4, 6, 8].

for 반복문 + append 패턴을 한 줄로 끝냅니다.



filter(func, iterable).

함수 결과가 True인 요소만 남김.

evens = list(filter(lambda x: x % 2 == 0, nums)) — [2, 4].

None을 함수로 주면 Truthy 요소만 남깁니다 — filter(None, [1, 0, "", "hi"]) → [1, "hi"].



현대 파이썬에서는 「리스트 컴프리헨션이 더 파이썬스럽다」는 평가가 일반적입니다.

doubled = [x * 2 for x in nums] — map보다 깔끔.

evens = [x for x in nums if x % 2 == 0] — filter보다 명료.

PEP 작성자 귀도 본인도 컴프리헨션을 더 권장한 바 있습니다.



그래도 map·filter가 유용한 자리가 있습니다.

「이미 정의된 함수」를 적용할 때 — names = list(map(str.upper, names)) — 가 컴프리헨션보다 짧습니다.

또 다른 함수형 언어 스타일에 익숙한 사람에게는 자연스러운 표현이며, 큰 데이터를 메모리 효율적으로 처리할 때 제너레이터를 함께 활용하기 좋습니다.




한 줄 요약


map은 모든 요소에 함수 적용, filter는 조건에 맞는 요소만 선택합니다.

현대 파이썬은 리스트 컴프리헨션을 더 권장하지만, 정의된 함수를 적용할 때는 map이 더 짧을 수 있습니다.




더 알아볼 것


- map vs 리스트 컴프리헨션 — 언제 무엇을

- reduce — functools로 옮겨간 함수

- 함수형 vs 명령형 스타일 논쟁

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 11 0
70 곰돌이 26/04/27 14 0
69 구름이 26/04/27 16 0
68 부엉이 26/04/27 12 0
67 야옹이 26/04/27 13 0
66 야옹이 26/04/27 15 0
65 멍뭉이 26/04/27 32 0
64 멍뭉이 26/04/27 14 0
63 부엉이 26/04/27 17 0
62 구름이 26/04/27 11 0
61 멍뭉이 26/04/27 15 0
60 야옹이 26/04/27 13 0
59 토순이 26/04/27 15 0
58 다람쥐 26/04/27 15 0
57 햇살이 26/04/27 19 0
56 멍뭉이 26/04/27 10 0
55 구름이 26/04/27 10 0
54 다람쥐 26/04/27 14 0
53 곰돌이 26/04/27 12 0
52 햇살이 26/04/27 38 0
51 멍뭉이 26/04/27 12 0
50 곰돌이 26/04/27 38 0
49 다람쥐 26/04/27 13 0
48 너구리 26/04/27 14 0
47 구름이 26/04/27 16 0
46 야옹이 26/04/27 13 0
45 너구리 26/04/27 13 0
44 야옹이 26/04/27 14 0
43 곰돌이 26/04/27 14 0
42 구름이 26/04/27 11 0
신고하기

신고 사유를 선택해 주세요.