본문 바로가기

Study Information Technology

Python의 함수형 프로그래밍 도구 탐색 map filter reduce

728x90
반응형

Python의 함수형 프로그래밍 도구 탐색: map, filter, reduce

Overview

파이썬에서 함수형 프로그래밍 도구인 map, filter, reduce는 데이터 조작을 보다 효율적으로 만들어주는 강력한 도구입니다. 이 도구들은 특히 리스트나 iterable 데이터를 처리할 때 유용합니다. 각 도구의 사용법과 그 활용 예를 통해 어떻게 데이터 조작을 더욱 효과적으로 할 수 있는지 자세히 살펴보겠습니다.

map 함수

map 함수는 주어진 함수와 iterable(리스트, 튜플 등)의 모든 요소에 대해 함수를 적용하여 새로운 iterable을 생성합니다. 이 함수는 각 요소에 함수를 적용하여 반환된 결과로 구성된 새로운 iterable을 반환합니다.

구문

map(function, iterable)

예제

리스트의 각 요소를 제곱하는 예제를 살펴보겠습니다.

def square(x):
return x * x

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)

print(list(squared_numbers))  # [1, 4, 9, 16, 25]

위 코드에서 map 함수는 square 함수를 numbers 리스트의 각 요소에 적용합니다. 결과는 각 요소가 제곱된 새로운 리스트입니다.

에러 및 해결책

map 함수 사용 중 TypeError가 발생할 수 있습니다. 예를 들어, function 파라미터에 잘못된 타입이 전달되면 TypeError가 발생합니다.

# 잘못된 예
numbers = [1, 2, 3, 4]
result = map(123, numbers)  # TypeError 발생

이 문제를 해결하려면, function 파라미터에 함수 객체를 전달해야 합니다.

filter 함수

filter 함수는 주어진 함수가 True를 반환하는 요소만을 포함하는 iterable을 반환합니다. 이 함수는 주어진 함수의 반환 값이 True인 요소만 남기고, 나머지는 필터링합니다.

구문

filter(function, iterable)

예제

리스트에서 짝수만 필터링하는 예제를 살펴보겠습니다.

def is_even(x):
return x % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(is_even, numbers)

print(list(even_numbers))  # [2, 4, 6]

위 코드에서 filter 함수는 is_even 함수가 True를 반환하는 요소만을 포함하는 새로운 iterable을 반환합니다.

에러 및 해결책

filter 함수 사용 중 TypeError가 발생할 수 있습니다. 함수가 아닌 다른 객체를 전달하면 TypeError가 발생합니다.

# 잘못된 예
numbers = [1, 2, 3, 4]
result = filter(123, numbers)  # TypeError 발생

이 문제를 해결하려면, function 파라미터에 함수 객체를 전달해야 합니다.

reduce 함수

reduce 함수는 주어진 함수를 iterable의 모든 요소에 대해 누적적으로 적용하여 단일 값을 반환합니다. reducefunctools 모듈에서 제공됩니다.

구문

from functools import reduce

reduce(function, iterable[, initializer])

예제

리스트의 모든 요소를 더하는 예제를 살펴보겠습니다.

from functools import reduce

def add(x, y):
return x + y

numbers = [1, 2, 3, 4, 5]
sum_result = reduce(add, numbers)

print(sum_result)  # 15

위 코드에서 reduce 함수는 add 함수를 numbers 리스트의 모든 요소에 대해 누적적으로 적용합니다. 결과는 리스트의 요소를 모두 더한 값입니다.

에러 및 해결책

reduce 함수 사용 중 TypeError가 발생할 수 있습니다. 예를 들어, function 파라미터에 올바르지 않은 타입이 전달되면 TypeError가 발생합니다.

# 잘못된 예
numbers = [1, 2, 3, 4]
result = reduce(123, numbers)  # TypeError 발생

이 문제를 해결하려면, function 파라미터에 올바른 함수 객체를 전달해야 합니다.

참고문서

이 문서들을 통해 map, filter, reduce 함수의 사용법과 다양한 예제를 자세히 살펴볼 수 있습니다.

728x90
반응형