Python] Map & Filter

Map

map(Function, Iterable Object)

1
2
M, N = map(int, input().split())
arr = list(map(int, input().split()))

알고리즘 할때 가장 많이 쓰는 map용법이다.

첫번째 인자에 함수가 들어가니 만든 함수를 넣을 수도 있다.

1
2
3
4
5
6
def pow(n):
return n**2

N = [1,2,3,4,5]
res = list(map(pow, N))
print(res) #[1, 4, 9, 16, 25]

함수 파라미터 갯수만큼 2번째 인자가 그만큼 더 필요할 수도 있다.

1
2
3
4
5
6
7
def sum(n, m):
return n + m

N = [1,2,3,4,5]
M = [5,4,3,2,1]
res = list(map(sum, N, M))
print(res) #[6, 6, 6, 6, 6]

함수 이름을 sum이라 한다면 내장되어 있는 sum함수를 사용할 수 없다. 그러니, 이전에 다룬 Lambda를 이용해서 사용하자.

1
2
3
4
N = [1,2,3,4,5]
M = [5,4,3,2,1]
res = list(map(lambda n, m: n+m, N, M))
print(res) #[6, 6, 6, 6, 6]

Filter

값을 걸러내는 기능

filter(Function, Iterable Object)

1
2
3
4
N = [1,2,3,4,5]

res = list(filter(lambda x: x%3, N))
print(res) #[1, 2, 4, 5]

Comprehension 변환

1
2
3
4
N = [1,2,3,4,5]

res = list(filter(lambda x: x%3, map(lambda x: x**2, N)))
print(res) #[1, 4, 16, 25]

으로 나타낼 수 있는 것을 Comprehension을 사용하여 나타낼 수도 있다.

1
2
3
N = [1,2,3,4,5]
res = [i**2 for i in N if i%3]
print(res) #[1, 4, 16, 25]