본문 바로가기
Python

[Python] map & filter

by 방준이 2020. 8. 14.
반응형

[Python] map & filter 사용법

 

 

 

map 

 

map 함수를 모른다고 가정하고 리스트 a의 값들을 각각 곱하기 2를 하여 리스트를 생성하고자 한다면 밑에 코드와 같은 방법을 사용하거나 혹은 반복문을 이용하여 리스트를 만들 것이다.

 

def mul(n):
    return n * 2
 
= [12345]
= [mul(a[0]), mul(a[0]), mul(a[0]), mul(a[0]), mul(a[0])]

# 2 4 6 8 10

 
 

 

하지만 map  함수를 이용하면 아주 간단하게 생성할 수가 있다.

 

def mul(n):
    return n * 2
 
= [12345]
= list(map(mul, a))
 
# [2, 4, 6, 8, 10]
cs

 

이렇게 a의 값들을 모두 mul 함수에 넣어서 반환 값들로 이루어진 리스트가 생성된다. map 함수는 a 에 저장된 값들을 하나씩 꺼내어 그 값을 인자로 하여 mul 함수를 호출해준다. 또한 map 함수는 iterator 객체를 반환한다 그 반환 값을 받아서 list 함수가 값을 꺼내어 리스트를 생성하게 된다. map 함수의 2번째 인자는 위에서와 같이 리스트를 전달했지만 iterable 객체라면 무엇이든 상관없다. 튜플 혹은 문자열도 가능하다

 

 

 

 

filter

filter 함수는  map 함수와 마찬가지로 함수를 인자로 받습니다 그리고 이 함수는 filter의 뜻에 맞게 값을 

걸러내는 기준이 되는 함수의 역할을 합니다  간단한 예를 살펴봅시다!

 

def even(n):
    return (n % 2== 0
 
arr = [12345678]
 
# 짝수인 값들  [2, 4, 6, 8] 인 리스트를 원해!
cs

 

여기서 짝수인 값들로 이루어진 list를 생성하기 위해서 반복문을 이용해도 되지만 filter 함수를 이용하면 매우 간단하게 코드를 구성할 수 있습니다.

 

 

def even(n):
    return (n % 2== 0
 
arr = [12345678]
brr = list(filter(even, arr))

# print(brr)
# [2, 4, 6, 8]
cs

 

map 함수와 같이 사용 방법은 매우 간단합니다 filter 함수에 올 수 있는 인자들을 살펴봅시다! 첫 번째로 올 수 있는 함수의 인자는 당연하게도 기준에 맞게 값을 걸러내는 역할을 하므로  True 또는 False를반환하는 함수가 와야 합니다!  두 번째로는 map 함수와 같이 iterable 객체가 와야 합니다! 반환 값은 map 함수와 마찬가지로 iterator 객체가 반환됩니다 따라서 iterator 객체를 통해서 list 함수가 값을 하나씩 꺼내어 리스트를 생성하게 됩니다.

 

 

 

 참고도서


윤성우의 열혈 파이썬 중급편

http://www.yes24.com/Product/Goods/81519650?OzSrank=7

반응형