IT Dev/Python

[Python] 파이썬 map 함수 사용방법

AlexaKim 2025. 4. 1. 22:40
BIG

파이썬의 map() 함수는 주어진 함수(function)를 반복 가능한(iterable) 객체의 각 요소에 적용하여 새로운 결과를 생성하는 함수입니다. map()을 사용하면 한 번에 여러 요소에 대해 동일한 연산을 적용할 수 있어 유용합니다.

1. 기본 구조

map(function, iterable, ...)
  • function: 각 요소에 적용할 함수입니다. 이 함수는 하나 이상의 인자를 받을 수 있습니다.
  • iterable: 함수가 적용될 반복 가능한 객체입니다. list, tuple, set 등 다양한 형태의 iterable 객체를 전달할 수 있습니다.
  • ...: 여러 개의 iterable을 전달할 수도 있습니다. 이 경우 함수는 여러 인자를 받도록 정의되어야 합니다.

2. 반환 값

map() 함수는 map 객체를 반환합니다. 이 객체는 이터레이터(iterator) 이므로, 이를 리스트나 튜플 등으로 변환하여 사용해야 합니다.

 

3. 사용방법

예시 1: 기본 사용법

다음은 숫자 리스트의 각 숫자에 대해 제곱을 계산하는 예시입니다.

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)

# map은 iterator를 반환하므로, list로 변환하여 출력
print(list(squared_numbers))  # 출력: [1, 4, 9, 16, 25]

위 코드에서 square 함수는 각 요소에 대해 제곱을 계산하고, map() 함수는 이를 모든 숫자에 적용합니다.

예시 2: 람다 함수 사용

map() 함수는 람다 함수를 사용하여 더 간결하게 표현할 수 있습니다.

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)

print(list(squared_numbers))  # 출력: [1, 4, 9, 16, 25]

람다 함수를 사용하면 함수 정의 없이 간단한 연산을 즉시 적용할 수 있습니다.

예시 3: 여러 개의 iterable을 전달

map() 함수는 두 개 이상의 iterable을 동시에 처리할 수도 있습니다. 이때, 제공된 함수는 각 iterable의 요소를 동시에 처리합니다. 각 인자는 함수에서 처리할 수 있는 개수만큼 받아야 합니다.

def add(x, y):
    return x + y

numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
sum_numbers = map(add, numbers1, numbers2)

print(list(sum_numbers))  # 출력: [5, 7, 9]

위 예시에서 add() 함수는 numbers1과 numbers2의 각 요소를 더하여 결과를 반환합니다.

예시 4: 문자열 처리

다음은 문자열 리스트에 대해 각 문자열의 길이를 계산하는 예시입니다.

words = ["apple", "banana", "cherry"]
word_lengths = map(len, words)

print(list(word_lengths))  # 출력: [5, 6, 6]

이 경우 len() 함수를 words 리스트의 각 요소에 적용하여 각 문자열의 길이를 계산합니다.

예시 5: 여러 함수 연쇄 사용

map() 함수는 여러 개의 함수들을 연쇄적으로 사용할 때 유용합니다. 예를 들어, 리스트의 숫자에 대해 제곱을 하고, 그 후에 그 숫자에 1을 더하는 경우를 생각해봅시다.

numbers = [1, 2, 3, 4, 5]

# 제곱하고, 그 후 1을 더하는 두 가지 작업을 연쇄적으로 처리
result = map(lambda x: x + 1, map(lambda x: x ** 2, numbers))

print(list(result))  # 출력: [2, 5, 10, 17, 26]

위 예시에서는 두 개의 map()을 중첩하여, 첫 번째 map()은 제곱을 하고 두 번째 map()은 그 값에 1을 더하는 작업을 수행합니다.

예시 6: map()과 None 사용

map() 함수에서 함수로 None을 사용할 수도 있습니다. 이 경우, map()은 각 요소를 그대로 반환합니다.

numbers = [1, 2, 3, 4, 5]
result = map(None, numbers)

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

이 예시는 map()에서 함수로 None을 사용하여, 각 요소를 그대로 반환하는 것입니다. 하지만 일반적으로 map()에서는 실제로 변환할 수 있는 함수를 사용하는 것이 좋습니다.

정리

  • map()은 지정된 함수를 iterable의 각 요소에 적용하여 결과를 반환하는 함수입니다.
  • map()은 iterator를 반환하므로, 이를 리스트나 튜플 등으로 변환해 사용해야 합니다.
  • 여러 개의 iterable을 전달할 수 있으며, 함수는 각 iterable에서 동일한 인덱스를 가진 요소들을 동시에 처리합니다.
  • map()은 lambda 함수와 함께 사용하면 더욱 간결하고 효율적인 코드 작성이 가능합니다.

map() 함수는 반복 가능한 객체의 각 요소에 동일한 작업을 수행해야 할 때 매우 유용하게 사용됩니다.

LIST