map(함수, iterable)
첫번째 매개변수 : 함수
두번째 매개변수 : iterable한 것들 (리스트, 튜플...)
적용방식
>>> 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]
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(함수, iterable)
적용방식
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]
위의 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)