map() 실전예제 20개
map() 함수의 핵심 활용법을 빠르게 익힐 수 있도록
변환, 문자열 처리, 여러 iterable 동시 처리, 입력 처리 예제를 한 번에 정리한 학습용 HTML입니다.
리스트의 각 원소에 대해 제곱 연산을 적용합니다.
nums = [1, 2, 3, 4, 5]
result = list(map(lambda x: x**2, nums))
print(result)
[1, 4, 9, 16, 25]
문자열 리스트의 각 값을 정수형으로 바꿉니다.
data = ['10', '20', '30']
result = list(map(int, data))
print(result)
[10, 20, 30]
문자열 형태의 실수 데이터를 float으로 바꿉니다.
data = ['3.14', '2.71', '1.41']
result = list(map(float, data))
print(result)
[3.14, 2.71, 1.41]
문자열 메서드를 직접 map에 넣어 각 원소를 대문자로 변환합니다.
words = ['python', 'map', 'lambda']
result = list(map(str.upper, words))
print(result)
['PYTHON', 'MAP', 'LAMBDA']
각 문자열의 길이를 구합니다.
words = ['apple', 'kiwi', 'banana']
result = list(map(len, words))
print(result)
[5, 4, 6]
여러 iterable을 동시에 받아 같은 위치 원소끼리 연산할 수 있습니다.
a = [1, 2, 3]
b = [10, 20, 30]
result = list(map(lambda x, y: x + y, a, b))
print(result)
[11, 22, 33]
두 리스트를 동시에 순회하며 보기 좋은 문자열로 가공합니다.
names = ['민수', '지우', '서연']
scores = [90, 85, 100]
result = list(map(lambda n, s: f'{n}: {s}점', names, scores))
print(result)
['민수: 90점', '지우: 85점', '서연: 100점']
양쪽 공백을 제거할 때 자주 쓰입니다.
data = [' hello ', ' python', 'map ']
result = list(map(str.strip, data))
print(result)
['hello', 'python', 'map']
숫자를 문자열로 바꾸어 join 등에 활용할 수 있습니다.
nums = [1, 2, 3, 4]
result = list(map(str, nums))
print(result)
['1', '2', '3', '4']
내장 함수 abs를 이용해 각 숫자의 절댓값을 구합니다.
nums = [-5, -2, 0, 3]
result = list(map(abs, nums))
print(result)
[5, 2, 0, 3]
문자열의 첫 글자만 뽑아낼 수 있습니다.
words = ['star', 'tiger', 'apple']
result = list(map(lambda x: x[0], words))
print(result)
['s', 't', 'a']
각 원소를 True/False 값으로 변환합니다.
nums = [0, 1, 2, 0, 5]
result = list(map(bool, nums))
print(result)
[False, True, True, False, True]
실생활 단위 변환에도 적합합니다.
celsius = [0, 10, 20, 30]
result = list(map(lambda c: c * 9/5 + 32, celsius))
print(result)
[32.0, 50.0, 68.0, 86.0]
복합 자료형의 특정 위치 원소를 추출할 수 있습니다.
pairs = [('a', 1), ('b', 2), ('c', 3)]
result = list(map(lambda x: x[1], pairs))
print(result)
[1, 2, 3]
숫자 표현 방식을 바꿀 때도 유용합니다.
nums = [1, 2, 3, 4]
result = list(map(bin, nums))
print(result)
['0b1', '0b10', '0b11', '0b100']
진법 변환을 한꺼번에 처리할 수 있습니다.
nums = [10, 15, 255]
result = list(map(hex, nums))
print(result)
['0xa', '0xf', '0xff']
map은 3개 이상의 iterable도 함께 처리할 수 있습니다.
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
result = list(map(lambda x, y, z: x + y + z, a, b, c))
print(result)
[12, 15, 18]
슬라이싱과 함께 사용하면 문자열 가공이 쉬워집니다.
words = ['python', 'map', 'code']
result = list(map(lambda x: x[::-1], words))
print(result)
['nohtyp', 'pam', 'edoc']
실전에서 가장 자주 쓰이는 패턴 중 하나입니다.
nums = list(map(int, input('숫자 여러 개 입력: ').split()))
print(nums)
입력: 10 20 30 → [10, 20, 30]
enumerate와 함께 쓰면 번호 붙이기 작업도 간단해집니다.
fruits = ['사과', '바나나', '포도']
result = list(map(lambda x: f'{x[0]}번: {x[1]}', enumerate(fruits, 1)))
print(result)
['1번: 사과', '2번: 바나나', '3번: 포도']
map(함수, 반복가능객체) 형태로 사용합니다.
결과는 map 객체이므로 실제 값을 보려면 보통 list()로 감싸서 확인합니다.
또한 여러 iterable을 동시에 전달하면 같은 위치의 값들을 함께 처리할 수 있습니다.