티스토리 뷰
안녕하세요 탐구소년입니다. 오늘은 리스트나 튜플을 조작하는데 유용하게 사용할 수 있는 파이썬 내장 함수 map과 filter에 대해 정리해보도록 하겠습니다.
[map]
먼저, map입니다. map은 기존 리스트 또는 튜플을 인자로 전달받아 하나의 iterable한 객체를 생성하여 반환해주는 함수입니다. 말만으로는 이해하기 애매한 함수이니, 바로 예제를 보도록 하겠습니다.
1
2
3
4
5
6
|
def even(num) :
return num * 2
sample = [1,2,3,4,5]
result = list(map(even, sample))
print(result)
|
사용자 정의 함수인 even은 인자를 하나 전달받아 인자의 값에 2를 곱하여 반환하는 역할을 합니다. 이 함수를 5번 줄에서 map의 첫번째 인자로 전달하고 있습니다. 또한 sample이라는 이름의 리스트를 map의 두번째 인자로 전달하고 있습니다. 두 인자를 전달받은 map 함수는 이제 sample의 다섯 개 요소를 각각 전달받아 각각에 2를 곱한 후 반환합니다. 그 결과 even으로부터 반환받은 결과값으로 구성된 iterable한 객체가 반환됩니다. 그리고 그 결과를 list로 형 변환해주면, result 변수에는 아래와 같은 결과물이 참조됩니다.
1
|
[2, 4, 6, 8, 10]
|
sample의 각 요소에 2를 곱하여 반환한 다섯 개의 숫자가 리스트의 멤버가 되었습니다.
map의 사용법을 알 수 있는 아주 기본적인 예제를 확인해보았습니다. 그럼 이번에는 filter 함수에 대해서 알아보겠습니다.
[filter]
filter는 이름에서도 알 수 있듯 요소를 걸러주는(?) 역할을 합니다. filter 역시 map처럼 함수를 인자로 전달받습니다. 인자로 전달받은 함수는 요소를 걸러내는 기준이 됩니다. 함수와 함께 전달해줄 인자는 대상 iterator 입니다. 예제를 보겠습니다.
1
2
3
4
5
6
7
8
|
def even(num) :
if num % 2 == 1 :
return False
return True
sample = [1,2,3,4,5]
result = list(filter(even, sample))
print(result)
|
이번에 even은 전달받은 인자가 홀수인 경우에는 False를, 짝수인 경우에는 True를 반환하도록 정의했습니다. 이 함수를 filter의 첫번째 인자로 전달했고, 두번째 인자로는 iterable한 객체인 sample 리스트를 전달했습니다. 이제 filter는 sample의 요소 하나하나를 even에 전달하여 True 또는 False 값을 반환받을 것입니다. 그 결과 True가 반환된 경우에만 해당 인자를 결과값에 포함시킬 것입니다. 그러면 결과로 반환된 result를 확인해보겠습니다.
1
|
[2, 4]
|
even 함수는 인자가 홀수인 경우(1, 3, 5)에는 False를 반환하기 때문에 해당 값들은 결과값에서 제외되었음을 확인할 수 있습니다.
'IT > 프로그래밍' 카테고리의 다른 글
자바스크립트 map() (0) | 2020.09.11 |
---|---|
[NODEJS] NODEJS 설치하기 (0) | 2020.09.04 |
[Javascript] HTML form 데이터 다루기 (0) | 2020.08.31 |
[python] 리스트 sort 함수 사용법 (1) | 2020.08.27 |
[NODEJS] passport 사용해 로컬 로그인 구현하기 (0) | 2020.08.26 |