본문 바로가기
프로그래밍 언어/Python

[Python 스터디] map() 함수와 filter() 함수

by HelloWoori 2022. 9. 22.
반응형

함수를 매개변수로 사용하는 대표적인 표준 함수로 map() 함수와 filter() 함수가 있다.

✔ 파이썬이 표준으로 제공하는 함수를 ‘내장 함수’ 또는 ‘표준 함수’ 라고 부른다

map() 함수

map() 함수는 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성해 주는 함수

map(함수, 리스트)

예제

def power(item):
  return item * item

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

output_map = map(power, item_list)
print("# map() 함수의 실행 결과")
print("map(power, item_list): ", output_map)
print("map(power, item_list): ", list(output_map))
print()
# map() 함수의 실행 결과
map(power, item_list):  <map object at 0x7f2c7cd78a60>
map(power, item_list):  [1, 4, 9, 16, 25]

 

filter() 함수

filter 함수는 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것으로, 새로운 리스트를 구성해주는 함수

filter(함수, 리스트)

예제

def under_3(item):
  return item < 3
  
item_list = [1, 2, 3, 4, 5]

output_filter = filter(under_3, item_list)
print("#filter() 함수의 실행 결과")
print("filter(under_3, item_list): ", output_filter)
print("filter(under_3, item_list): ", list(output_filter))
#filter() 함수의 실행 결과
filter(under_3, item_list):  <filter object at 0x7fd1db33ba60>
filter(under_3, item_list):  [1, 2]

 

결론

map() 함수와 filter 함수는 모두 첫 번째 매개변수에 함수, 두 번째 매개변수에 리스트를 넣는다.

 

map() 함수 예제를 살펴보면,

첫번째 매개변수에는 값을 제곱해 주는 power() 함수를 넣었고

두번째 매개변수에는 [1, 2, 3, 4, 5]라는 리스트를 넣었다.

그리고 그 결과로 [1, 2, 3, 4, 5] 내부의 요소에 power() 함수가 적용된

[1, 4, 9, 16, 25]를 얻었다.

 

filter() 함수 예제를 살펴보면,

첫 번째 매개변수에는 3 미만의 값을 판정해주는 under_3() 함수를 넣었고

두 번째 매개변수에는 [1, 2, 3, 4, 5]라는 리스트를 넣었다.

그리고 그 결과류 [1, 2, 3, 4, 5] 내부의 요소 중 3보다 작은 요소들로 구성된

[1, 2]를 얻었다.

 

이를 print() 로 출력해보면

<map object>와 <filter object>가 나오는데, 이를 제너레이터(generator)라고 부른다.

여기에 list() 함수를 적용해서, 강제로 리스트 자료형으로 변환할 수 있다.

 

참고

알고리즘 테스트를 준비할 때,

임의의 개수의 정수를 한 줄에 입력 받아 리스트에 저장할 때가 있다.

이때 자주 사용하는 코드를 자세히 들여다보자.

data = list(map(int, input()))

 

1. int()는 파이썬의 내장함수로, 숫자나 문자열을 정수형(Integer)로 변환할 수 있다.

https://codetorial.net/tips_and_examples/int_function.html

a = int('123')
print(a)
123

 

2. input()은 파이썬의 내장함수로, 사용자의 입력을 받을 수 있다.

https://wikidocs.net/25

number = input("숫자를 입력하세요: ")

 

3. split()는 파이썬의 내장함수로, 첫번째 인자로 구분자 문자열을 넣어 문자열을 리스트로 돌려받을 수 있다.

https://docs.python.org/ko/3/library/stdtypes.html?highlight=split#str.split

'1,2,3'.split(',')
['1', '2', '3']

또는

'1 2 3'.split()
['1', '2', '3']

와 같이 사용할 수 있다.

 

즉, 1, 2, 3 내용을 알고 있는 상태로 다시 한 번 아래 코드를 살펴보면,

data = list(map(int, input()))

유저가 입력한 값을(input())

공백 기준으로 구분하여 리스트로 돌려받아(input().split())

map() 함수에 이를 두번째 인자로 넣고, 첫번째 인자로 int() 함수를 넣으면

<map object>가 나오는데, 이를 리스트 자료형으로 강제변환한 결과를 data 에 넣는 것…!

이라는 결론에 이르를 수 있다.

 

이 정보를 알고 있다면, 아래 문서가 좀 더 이해가 잘 될 듯…오늘도 배워갑니다😎

 

[Python 스터디] input을 이용해 값을 입력 받아 리스트에 넣기

input 사용자가 입력한 값을 읽어들이는 함수 list1 = [] s = input('입력하세요: ') list1.append(s) print(list1) 입력하세요: A ['A'] 원하는 자료형 받기 만약에 문자열이 아닌 다른 자료형을 입력 받게 하고..

hellowoori.tistory.com

 

 

반응형

댓글0