본문 바로가기
실버를 위한 코딩/파이썬

[파이썬] `map()` 함수와 `filter()` 함수

by forSilver 2024. 6. 29.
반응형

map() 함수와 filter() 함수

map() 함수와 filter() 함수는 파이썬에서 반복 가능한 객체의 요소들을 처리하는 데 유용한 함수형 프로그래밍 도구입니다. 각각의 특징과 사용법을 예제와 함께 살펴보겠습니다.

map() 함수

  • 특징:
    • 반복 가능한 객체의 각 요소에 함수를 적용한 결과를 반환합니다.
    • 반환값은 map 객체로, 이를 리스트나 다른 반복 가능한 형태로 변환할 수 있습니다.
  • 문법:
    • map(function, iterable)
  • 예제:
# 리스트의 각 요소에 2를 곱하는 함수
numbers = [1, 2, 3, 4, 5]
doubled = map(lambda x: x * 2, numbers)
print(list(doubled))  # 출력: [2, 4, 6, 8, 10]
  • 다양한 예제:
# 문자열 리스트의 각 문자열을 대문자로 변환
strings = ["hello", "world", "python"]
uppercased = map(str.upper, strings)
print(list(uppercased))  # 출력: ['HELLO', 'WORLD', 'PYTHON']

map() 예제 리눅스 터미널에서 코딩

filter() 함수

  • 특징:
    • 반복 가능한 객체의 각 요소에 함수를 적용하여, 함수의 반환값이 True인 요소들만 걸러냅니다.
    • 반환값은 filter 객체로, 이를 리스트나 다른 반복 가능한 형태로 변환할 수 있습니다.
  • 문법:
    • filter(function, iterable)
  • 예제:
# 리스트에서 짝수만 필터링하는 함수
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = filter(lambda x: x % 2 == 0, numbers)
print(list(evens))  # 출력: [2, 4, 6, 8, 10]
  • 다양한 예제:
# 문자열 리스트에서 길이가 5 이상인 문자열만 필터링
strings = ["hello", "world", "python", "is", "great"]
long_strings = filter(lambda s: len(s) >= 5, strings)
print(list(long_strings))  # 출력: ['hello', 'world', 'python', 'great']

filter() 예제를 리눅스 터미널에서 코딩

map()filter()의 비교

  • map()은 반복 가능한 객체의 모든 요소에 대해 함수를 적용합니다. 결과는 동일한 길이의 새로운 반복 가능한 객체입니다.
  • filter()는 반복 가능한 객체의 요소에 대해 함수를 적용하여 조건을 만족하는 요소들만 반환합니다. 결과는 조건을 만족하는 요소들로 구성된 새로운 반복 가능한 객체입니다.

함께 사용하기

map()filter()를 함께 사용할 수도 있습니다. 예를 들어, 리스트의 요소를 먼저 변환하고, 그중 조건을 만족하는 요소만 필터링하는 경우입니다.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 먼저 각 요소를 2배로 만들고, 그 중에서 짝수만 필터링
result = filter(lambda x: x % 2 == 0, map(lambda x: x * 2, numbers))
print(list(result))  # 출력: [4, 8, 12, 16, 20]

map()과 filter()를 함께 사용한 코딩

 

이처럼 map()filter()는 데이터를 변환하고 조건을 적용하여 필터링하는 데 매우 유용한 함수들입니다.