본문 바로가기

프로그래밍/[Python] 파이썬

[Python] map() 함수 이해하기 - 파이썬 문법

by GenieIT* 2024. 10. 25.

728x90
728x90

 

1. map() 함수란?

  • 파이썬의 map() 함수반복 가능한(iterable) 객체의 각 요소에 대해 지정된 함수를 적용하여 결과를 반환하는 함수입니다.
  • 기본적으로 리스트, 튜플과 같은 반복 가능한 객체의 모든 요소에 함수를 한 번씩 적용하고, 그 결과를 맵 객체(map object)로 반환합니다.

 

2. 기본 문법

  • function: 각 요소에 적용할 함수. 보통 lambda 함수를 많이 사용하지만, 기존에 정의된 함수도 사용할 수 있습니다.
  • iterable: 리스트, 튜플, 문자열 등 반복 가능한 객체입니다. 여러 개의 반복 가능한 객체를 사용할 수 있으며, 이 경우 함수는 해당 객체들로부터 동일한 위치의 요소들을 인자로 받습니다.
map(function, iterable1, iterable2, ...)

 

2-1. 기본 사용 예제

# 리스트의 각 요소를 제곱하는 함수
numbers = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, numbers)

# map 객체를 리스트로 변환하여 결과 출력
print(list(squared))  # 출력: [1, 4, 9, 16]

 

 

2-2. 주요 특징

  • 지연 평가(lazy evaluation): map() 함수는 즉시 결과를 반환하지 않고, 필요한 시점에 결과를 생성합니다. 이 때문에 list()나 for 루프 등을 사용하여 결과를 추출해야 합니다.
  • 여러 개의 iterable을 인수로 사용할 수 있습니다. 이 경우, 각 iterable의 동일한 인덱스에 있는 요소들이 함수에 전달됩니다.
  • 반복 가능한 객체들의 길이가 다르면 가장 짧은 길이를 가진 객체에 맞추어 처리가 끝납니다.

 

2-3. map과 for 루프의 비교

  • map() 함수를 사용해 리스트 각 요소를 제곱한 새로운 리스트 생성
numbers = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, numbers)

print(list(squared))  # 출력: [1, 4, 9, 16]
  • for문을 사용해 리스트 각 요소를 제곱해 새로운 리스트 생성
numbers = [1, 2, 3, 4]
squared = []

for num in numbers:
    squared.append(num ** 2)
    
print(squared)  # 출력: [1, 4, 9, 16]

 

3. 활용 예제

3-1. 여러 iterable에 함수 적용

li1 = [1, 2, 3]
li2 = [4, 5, 6]
li3 = [7, 8, 9]

sum_list = list(map(lambda x, y, z : x + y + z, li1, li2, li3))

print(sum_list) # 출력 : [12, 15, 18]

 

 

3-2. 정의된 함수 사용

def add_five(x):
    return x + 5

numbers = [0, 1, 2, 3]
result = list(map(add_five, numbers))
print(result)  # 출력: [5, 6, 7, 8]

 

3-3. 문자열 처리

  • 문자열을 대문자로 반환 후 새로운 리스트 생성
words = ['apple', 'banana', 'cherry']
capitalized = map(str.upper, words)

print(list(capitalized))  # 출력: ['APPLE', 'BANANA', 'CHERRY']

 

 

3-4. 숫자 변환

  • 문자열을 정수형으로 반환 후 새로운 리스트 생성
str_numbers = ['1', '2', '3', '4']
int_numbers = map(int, str_numbers)

print(list(int_numbers))  # 출력: [1, 2, 3, 4]

 

4. map()의 지연 평가와 리스트 변환

  • map() 함수는 결과를 바로 반환하지 않고 lazy evaluation을 적용하여 필요할 때 계산합니다.
  • map() 객체는 반복 가능하지만 결과를 메모리에 미리 저장하지 않으며, 이를 리스트나 튜플로 변환해야 값을 볼 수 있습니다.
result = map(lambda x: x * 2, [1, 2, 3])

print(result)         # 출력: <map object at 0x...> (메모리 주소)
print(list(result))   # 출력: [2, 4, 6] (리스트로 변환 후 결과 출력)

 


 

관련글 목록

[Python] lambda 함수 이해하기 - 파이썬 문법

[Python] sorted() 함수와 sort() 메서드 차이점

[Python] sorted() 내장 함수

 

 

728x90