본문 바로가기
Algorithm/알고리즘 공부노트

파이썬 - filter와 lambda, map 사용방법

by devraphy 2021. 8. 6.

1. filter() 와 lambda, map()

a) filter() 와 lambda

- filter() 함수는 특정 조건에 걸러진 요소들을 iterator 객체로 만들어 반환한다. 

- 즉, list, set, tuple에 담아야 사용 및 출력할 수 있다는 것이다. 

- 여기서 특정 조건은 적용시킬 함수를 의미한다. 그래서 lambda를 많이 사용한다. 

 

- lambda는 다음과 같은 형태로 구성된다.

lambda 인자 : 표현식

 

- 만약 a, b 두 수의 합을 반환하는 함수를 작성한다면 다음과 같이 작성할 수 있다. 

def plus(a, b):
   return a + b
   
plus(10, 10) # 20을 반환한다.

 

- 이를 람다로는 다음과 같이 작성할 수 있다.

result = (lambda a, b : a + b)(10, 10)
print(result) # 20을 반환한다.

 

b) filter()와 lambda 연습하기

- 이제 filter()와 lambda를 이용하여 한가지 문제를 풀어보자. 

- 어떤 리스트 a 에는 1~8 까지의 요소가 담겨있다. a = [1,2,3,4,5,6,7,8]

- 이 요소들 중 2로 나누어 지는 수만을 출력해라.

 

a = [1,2,3,4,5,6,7,8]
for data in a:
  a = filter(lambda x : x % 2 == 0, a)
print(list(a)) # [2,4,6,8]이 출력된다.

 

c) map()

- map()은 filter와 동일한 구조를 가지고 있으나, 기능이 다르다.

- map()은 모든 iterator 요소에 어떤 함수를 적용하는 기능을 가진다. 

- map()은 filter와 동일하게 iterator 객체를 반환한다. 

- 즉, list, set, tuple 형태로 받아서 사용 및 출력이 가능하다. 

 

- 다음과 같은 문자를 담고있는 문자열을 모두 아스키코드로 바꾸고 싶다면 어떻게 할까? 

list_a = ["A", "B", "C"]

 

- map을 사용하여 다음과 같이 작성할 수 있다. 

a = ["A", "B", "C"]
a = list(map(ord, a))
print(a) # [65, 66, 7]을 반환한다.

 

댓글