티스토리 뷰

 

안녕하세요 탐구소년입니다. 오늘은 리스트나 튜플을 조작하는데 유용하게 사용할 수 있는 파이썬 내장 함수 map과 filter에 대해 정리해보도록 하겠습니다. 

 

 

[map]

 

먼저, map입니다. map은 기존 리스트 또는 튜플을 인자로 전달받아 하나의 iterable한 객체를 생성하여 반환해주는 함수입니다. 말만으로는 이해하기 애매한 함수이니, 바로 예제를 보도록 하겠습니다. 

 

1
2
3
4
5
6
def even(num) :
    return num * 2
 
sample = [1,2,3,4,5]
result = list(map(even, sample))
print(result)

사용자 정의 함수인 even은 인자를 하나 전달받아 인자의 값에 2를 곱하여 반환하는 역할을 합니다. 이 함수를 5번 줄에서 map의 첫번째 인자로 전달하고 있습니다. 또한 sample이라는 이름의 리스트를 map의 두번째 인자로 전달하고 있습니다. 두 인자를 전달받은 map 함수는 이제 sample의 다섯 개 요소를 각각 전달받아 각각에 2를 곱한 후 반환합니다. 그 결과 even으로부터 반환받은 결과값으로 구성된 iterable한 객체가 반환됩니다. 그리고 그 결과를 list로 형 변환해주면, result 변수에는 아래와 같은 결과물이 참조됩니다. 

 

1
[246810]

sample의 각 요소에 2를 곱하여 반환한 다섯 개의 숫자가 리스트의 멤버가 되었습니다. 

map의 사용법을 알 수 있는 아주 기본적인 예제를 확인해보았습니다. 그럼 이번에는 filter 함수에 대해서 알아보겠습니다. 

 

 

[filter]

 

filter는 이름에서도 알 수 있듯 요소를 걸러주는(?) 역할을 합니다. filter 역시 map처럼 함수를 인자로 전달받습니다. 인자로 전달받은 함수는 요소를 걸러내는 기준이 됩니다. 함수와 함께 전달해줄 인자는 대상 iterator 입니다. 예제를 보겠습니다. 

 

1
2
3
4
5
6
7
8
def even(num) :
    if num % 2 == 1 :
        return False
    return True
 
sample = [1,2,3,4,5]
result = list(filter(even, sample))
print(result)

이번에 even은 전달받은 인자가 홀수인 경우에는 False를, 짝수인 경우에는 True를 반환하도록 정의했습니다. 이 함수를 filter의 첫번째 인자로 전달했고, 두번째 인자로는 iterable한 객체인 sample 리스트를 전달했습니다. 이제 filter는 sample의 요소 하나하나를 even에 전달하여 True 또는 False 값을 반환받을 것입니다. 그 결과 True가 반환된 경우에만 해당 인자를 결과값에 포함시킬 것입니다. 그러면 결과로 반환된 result를 확인해보겠습니다. 

 

1
[24]

even 함수는 인자가 홀수인 경우(1, 3, 5)에는 False를 반환하기 때문에 해당 값들은 결과값에서 제외되었음을 확인할 수 있습니다. 

 

 

 

댓글
공지사항