▶ 파이썬의 기본 함수인 map은 예제를 통해서 이해하는게 빠릅니다.
다음 예제를 살펴보겠습니다.
[ 예제1 ]
def pow(n):
return n ** 2
st1 = [1, 2, 3]
print(st2)
위의 예제는 n의 제곱 값을 계산해서 반환하는 프로그랩니다.
-----------------------------------------------------------------------------
[ 예제2 ] pow함수와 st1이 참조하는 리스트를 이용해서 다음과 같이 st2를 만들어 보고자 합니다.
st2 = [ 1, 4, 9 ]
def pow(n):
return n ** 2
st1 = [1, 2, 3]
st2 = [pow(st1[0]), pow(st1[1]), pow(st1[2])]
print(st2)
값을 일일이 넣어서 pow함수를 호출해야 합니다.
st2 = [ pow(st1[0]), pow(st1[1]), pow(st1[2]) ]
그런데 이는 정말 불편한 코드입니다.
리스트의 길이가 긴 경우 문제가 될 수 있고, 또 이렇게 일일이 함수를 호출하는 것은 정말 번거로운 일입니다.
그런데 이런 일을 map 함수가 대신해 줍니다.
-----------------------------------------------------------------------------
[ 예제 3 ]
def pow(n):
return n ** 2
st1 = [1, 2, 3]
st2 = list(map(pow, st1))
print(st2)
▶ map 함수는 st1에 저장된 값들을 하나씩 전달하면서 pow함수를 호출해줍니다.
즉, st1에 저장된 값의수만큼 pow 함수가 호출되며 그것이 map 함수가 하는 일입니다.
st2 = list ( map ( pow, st1))
단, 이때 map의 두 번재 전달 대상은 iterable 객체여야 합니다.
-----------------------------------------------------------------------------
[ 예제4 ]
def pow(n):
return n ** 2
st = [1, 2, 3]
ir = map(pow, st)
for i in ir:
print(i, end= ' ')
▶ ir은 iterator 객체이므로 for 루프에 올 수 있습니다.
-----------------------------------------------------------------------------
[ 예제5 ]
def mul(n):
return n * 2
#튜플(1,3,4)를 map에 전달
tup = list(map(mul, (1, 3, 4)))
print(tup)
#문자열 'python'를 map에 전달
st = list(map(mul, 'python'))
print(st)
▶ 튜플도 전달 가능하고 문자열도 전달이 가능합니다.
즉, iterator 객체이면 무엇이든 전달 가능합니다.
-----------------------------------------------------------------------------
[ 예제 6 ]
def sum(a, b):
return a+b
st1 = [3, 5, 6, 3]
st2 = [5, 2, 7, 5]
st3 = list(map(sum, st1, st2))
print(st3)
▶ 예제6은 map에 sum을 전달했습니다.
그런데 sum은 매개변수가 둘이므로 map은 두 개의 iterable 객체를 요구합니다. 그래서 총 세 개의 객체가 map에 전달되었습니다.
-----------------------------------------------------------------------------
[ 예제 7 ]
def rev(s):
return s[ : : -1]
st = ['JANUARY', 'FEBRUARY', ' MARCH' , 'APRIL']
rst = list(map(rev, st))
print(rst)
▶ 슬라이싱 연산에서 세 번째 값이 음수이면 값을 꺼내는 방향이 달라집니다.
-----------------------------------------------------------------------------
[ 예제 8 ] 람다식 기반으로 코드를 작성하는 것이 더 간결해 보입니다.
st = ['JANUARY', 'FEBRUARY', ' MARCH' , 'APRIL']
rst = list(map(lambda s : s[ : : -1], st))
print(rst)
※ map() 함수 더 알아보기
명문코딩컴퓨터 - www.edukoi.co.kr (02.993.0042) :: 30. 파이썬 map함수 - 2 (tistory.com)
http://www.edukoi.co.kr
www.edukoi.co.kr
'파이썬' 카테고리의 다른 글
28. 파이썬 람다 (0) | 2024.01.31 |
---|---|
27. 파이썬 filter 함수 (0) | 2024.01.31 |
25. 파이썬 입력 sys 라이브러리 (0) | 2023.07.29 |
24. 파이썬 리스트 (0) | 2022.11.11 |
23. 파이썬 문자열 - ord(), chr(), x.upper(), x.lower() (0) | 2022.11.06 |