Algorithm/알고리즘 스터디

인터페이스 맵 MAP

따`ddah 2025. 1. 20. 15:55

 

MAP은 반복연산을 수행해주는 파이썬 내장함수이다.

 

반복연산에는 for문, while문이 있는데

map은 그 중에서도 for문을 이용해서 자료를 다루는 것을 좀 더 간결하게 나타낼 수 있도록 한다.

 

map은 실질적으로 사용을 해도 안해도 크게 문제가 될 것 없이 for문으로 다 대체가 가능하다.

파이썬 내부에서 동작을 수행할 때도 for문을 쓰는거에 비해서 월등하게 더 빠르지도 않다.


Map

  • key-value pair들을 저장하는 ADT
    * ADP : ?
  • 중복된 key 값을 가지면 안됨. 

Map 언제 사용할까?

 

1. key값와 value값을 맵핑할 때

전화번호(key), 이름(value)

2. 카운트할 때

영화이름(key) 득표수(value)

 

https://www.youtube.com/watch?v=ZBu_slSH5Sk


MAP 사용 예시

1. 짝수 만들기

# 함수 생성
def make_even(num):
	if num%2==1;
    	return num+1
    else:
    	return num
        
x = [551, 641, 122, 234, 115]
# for문을 활용하여 결과값 출력
y = []
for num in x:
  y.append(make_even(num))

print(y)

# 결과 : [552, 642, 122, 234, 116]
# map을 활용하여 결과값 출력
z = map(make_even, x)

print(z) 

# 결과 : <map object at 0x7dcb48da1d50>
# 파이썬에서 자체적으로 메모리를 절약하기 위한 결과 출력 방식

print(list(z)) 

# 결과 : [552, 642, 122, 234, 116]
# map 출력 방식에 list로 변환하여 출력

2. 제곱 만들기

a = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

# for문 사용
a_square_for = []
for num in a:
  a_square_for.append(num**2)

print("for문 사용 :", a_square_for)
# 결과 : 
# for문 사용 : [4, 16, 36, 64, 100, 144, 196, 256, 324, 400]

# -------------------------------------------------------

# map 사용
a_square_map = list(map(lambda x: x**2, a))

print("map 사용 :", a_square_map)
# 결과 : 
# map 사용 : [4, 16, 36, 64, 100, 144, 196, 256, 324, 400]

 

map(lambda x: x**2, a)

 

lambda x: x**2 -> 어떤 변수를 어떻게 할 것인지

a -> 어떤 리스트에 있는지


3. 지역 이름과 면적 추출하기

area = ["seoul,605", "busan,770", "daegu,884"]

names = list(map(lambda x: x.split(",")[0], area))

print(names)
# 결과 : ['seoul', 'busan', 'daegu']


areas = list(map(lambda x: x.split(",")[1], area))

print(areas)
# 결과 : ['605', '770', '884']

 

# areas type 확인

print(type(areas[0]))
# 결과 : <class 'str'>
# (1번) areas 형식 str -> int
areas_no1 = list(map(lambda x: int(x.split(',')[1]), area))

print(type(areas_no1[0]))
# 결과 : <class 'int'>


# (2번) areas 형식 str -> int
areas_no2 = list(map(lambda x: int(x), areas))

print(type(areas_no2[0]))
# 결과 : <class 'int'>

https://chatgpt.com/share/678d0dd4-b7e0-8005-8931-dc13f9e4dc98

728x90