(Python) map, filter

brian·2022년 5월 2일
0

Python 기초

목록 보기
3/7

map 함수

기본

map(함수, iterable)
첫번째 매개변수 : 함수
두번째 매개변수 : iterable한 것들 (리스트, 튜플...)

적용방식

  • iterable 한 것들을 순서대로 함수에 대입하여 그 결과를 return받는다.
  • 결과로 나오는 객체는 map객체가 된다.

예시

>>> def plus_ten(x):
... 	return x + 10
...
>>> map(plus_ten, [1,2,3])
<map object at 0x1074755a0> # map 함수는 map객체를 반환한다.
>>> list(map(plus_ten, [1,2,3]))
[11, 12, 13]

lambda와 map 함수

map함수의 사용법이 map(함수, iterable) 이므로, 함수 자리에 이름없는 함수인 lambda를 사용할 수도 있다. 아래와 같이 간단한 함수의 경우 일일이 def를 통해 함수선언을 해주는 것 보다 lambda를 사용하는 편이 편리하다.
함수 : 입력값에 1을 더해서 반환해주는 함수
iterable : [1,2,3,4,5]

>>> list(map(lambda x: x+1, [1,2,3,4,5]))
[2, 3, 4, 5, 6]

filter 함수

기본

filter(함수, iterable)

적용방식

  • iterable을 함수에 대입하여 그 값이 True인 경우에만 값을 반환한다.

예시

def f(x):
    return x>5 and x<10

a = [8,3,2,10,15,7,1,9,0,11]

# filter 함수 사용
list(filter(f,a))
[8, 7, 9]

# map 함수 사용
list(map(f,a))
[True, False, False, False, False, True, False, True, False, False]

lambda와 filter 함수

위의 f 함수를 lambda 형식으로 filter에 대입하면,

list(filter(lambda x: x>5 and x<10, a))
[8, 7, 9]
list(map(lambda x: x>5 and x<10, a))
[True, False, False, False, False, True, False, True, False, False]

함수 f를 선언하고, a=[1,2,3,4,...] 리스트로 선언
f(a) 를 처리하면, TypeError발생 : (list타입에 < 연산자 사용불가)

이 것을 처리하기 위해 filter나 map함수를 활용할 수 있다.

map(함수, iterable)
filter(함수, iterable)

단, map이나 filter는 각 map객체, filter객체를 생성하므로
다시 list로 바꾸어야 식별이 가능해진다.

list(map(함수, iterable)
list(filter(함수, iterable)

0개의 댓글