파이썬의 map()
함수는 반복 가능한(iterable) 객체(리스트, 튜플 등)의 모든 요소에 특정 함수를 적용하고, 그 결과를 새로운 map
객체로 반환하는 함수이다. 즉, 여러 요소에 동일한 연산이나 함수를 한 번에 적용할 때 유용하게 사용할 수 있다.
map(data type / 함수, 반환할 형식)
data type / 함수
: 각 요소에 적용할 데이터 타입 또는 함수(함수는 한 개의 인자를 받아야 함).map()
함수는 반환값으로 map 객체를 돌려주며, 이를 리스트나 다른 반복 가능한 객체로 변환해서 사용해야 함.map()
함수는 필요할 때만 값을 계산.list()
나 for
루프 등으로 명시적으로 요소에 접근할 때만 계산이 발생.int
데이터 타입 적용# 리스트의 각 요소를 `float`에서 `int`로 변경하는 예시
numbers = [1.2, 2.5, 3.7, 4.6]
result = map(int, numbers)
# 결과를 리스트로 변환하여 출력
print(list(result)) # [1, 2, 3, 4]
map
객체로 반환되어, 이를 list()
로 변환하여 출력# 리스트의 각 요소에 2를 곱하는 예시
def multiply_by_two(x):
return x * 2
numbers = [1, 2, 3, 4, 5]
result = map(multiply_by_two, numbers)
print(list(result)) # [2, 4, 6, 8, 10]
multiply_by_two()
함수는 리스트 numbers
의 각 요소에 대해 호출map()
사용# 람다 함수를 사용해 리스트의 각 요소에 2를 곱하기
numbers = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, numbers)
print(list(result)) # [2, 4, 6, 8, 10]
map()
함수는 두 개 이상의 반복 가능한 객체를 동시에 처리할 수 있다.
# 두 리스트의 요소를 더하는 예시
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
result = map(lambda x, y: x + y, numbers1, numbers2)
print(list(result)) # [5, 7, 9]
numbers1
과 numbers2
의 각 요소들이 람다 함수에 전달되고, 두 리스트의 요소가 더해짐.map()
함수는 문자열 같은 다른 반복 가능한 객체에도 적용할 수 있다.
# 문자열의 각 문자를 대문자로 변환
chars = ['a', 'b', 'c', 'd']
result = map(str.upper, chars)
print(list(result)) # ['A', 'B', 'C', 'D']
str.upper
는 문자열의 문자를 대문자로 변환하는 메소드로, 리스트 chars
의 각 요소에 적용.map()
함수와 for
루프 비교map()
함수는 기본적으로 반복문(for
루프)과 비슷한 역할을 한다. 반복문과 다른점은 map()
은 함수형 프로그래밍 스타일을 따른다.
for
루프numbers = [1, 2, 3, 4, 5]
result = []
for num in numbers:
result.append(num * 2)
print(result) # [2, 4, 6, 8, 10]
map()
함수numbers = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, numbers)
print(list(result)) # [2, 4, 6, 8, 10]
map()
의 반환형map()
함수는 map
객체를 반환하는데, 이는 한 번만 반복할 수 있는 이터레이터(iterator)이다. 따라서 list()
나 tuple()
을 사용해 명시적으로 변환해야 한다.
result = map(lambda x: x * 2, [1, 2, 3])
print(result) # <map object at 0x...> (map 객체)
print(list(result)) # [2, 4, 6] (리스트로 변환)
map()
함수는 게으른 평가(lazy evaluation) 방식으로 동작하므로, 결과를 직접 사용하는 시점까지 계산이 지연된다. 따라서 반복문이나 리스트 등으로 변환해야 결과를 볼 수 있다.map()
은 원본 데이터를 변경하지 않는다. 새로운 map
객체를 반환할 뿐, 원본 리스트나 튜플은 변경되지 않는다.