파이썬/기초 프로그래밍

Python list, filter, map 쉽게 이해하기

Data Jun 2025. 9. 7. 13:05

 

1. filter — 조건에 맞는 값만 추출

filter(func, iterable)은 조건을 만족하는 값만 남기는 함수입니다.

func(x)가 True일 때만 요소가 유지됩니다.

# 짝수만 추출
nums = [1, 2, 3, 4, 5, 6]
evens = list(filter(lambda x: x % 2 == 0, nums))
# [2, 4, 6]

 

2. map — 모든 요소에 함수 적용

map(func, iterable)은 각 요소에 동일한 함수를 적용한 결과를 반환합니다.

# 각 숫자를 제곱으로 변환
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x * x, nums))
# [1, 4, 9, 16]
 

3. list, filter, map 함께 쓰기

예시 시나리오

 

점수 리스트가 있고, 음수는 제거, 100점을 넘으면 100으로 처리, 70점 이상은 1.2배 보정하되 최대 100점으로 제한한다고 해봅시다.

scores = [95, 67, -3, 88, 120, 70, 0, 101]

# 1) 음수 제거
valid = filter(lambda s: s >= 0, scores)

# 2) 상한값 100으로 제한
clipped = map(lambda s: 100 if s > 100 else s, valid)

# 3) 70점 이상은 1.2배 보정, 단 최대 100
adjusted = map(
    lambda s: min(100, int(round(s * 1.2))) if s >= 70 else s,
    clipped
)

result = list(adjusted)
print(result)
# [100, 67, 100, 100, 84, 0, 100]

 

한 줄로 쓰기 (파이프라인 스타일)

def adjust_scores(scores):
    return list(
        map(
            lambda s: min(100, int(round(s * 1.2))) if s >= 70 else s,
            map(
                lambda s: 100 if s > 100 else s,
                filter(lambda s: s >= 0, scores)
            )
        )
    )

print(adjust_scores([95, 67, -3, 88, 120, 70, 0, 101]))

 

4. 리스트 컴프리헨션으로도 가능

파이썬에서는 간단한 변환/필터링은 리스트 컴프리헨션으로 더 읽기 쉽게 쓸 수 있습니다.

scores = [95, 67, -3, 88, 120, 70, 0, 101]

adjusted = [
    (min(100, int(round(s * 1.2))) if s >= 70 else s)
    for s in (min(100, s) for s in scores if s >= 0)
]

 

 

 

정리하면

  • list() : 결과를 리스트로 변환
  • filter() : 조건에 맞는 값만 추출
  • map() : 모든 요소에 함수를 적용
  • map과 filter를 함께 쓰면 강력하지만, 복잡한 경우 리스트 컴프리헨션이 가독성이 더 좋음