▶ 파이썬의 기본 함수인 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
Posted by 명문코딩컴퓨터
,