Python : map()

m_ngyeong·2024년 10월 10일
0

Python

목록 보기
9/17
post-thumbnail

🐍 Python


map() 함수란?

파이썬의 map() 함수는 반복 가능한(iterable) 객체(리스트, 튜플 등)의 모든 요소에 특정 함수를 적용하고, 그 결과를 새로운 map 객체로 반환하는 함수이다. 즉, 여러 요소에 동일한 연산이나 함수를 한 번에 적용할 때 유용하게 사용할 수 있다.

map() 함수의 기본 구조

map(data type / 함수, 반환할 형식)
  • data type / 함수: 각 요소에 적용할 데이터 타입 또는 함수(함수는 한 개의 인자를 받아야 함).
  • 반환할 형식: 리스트, 튜플, 문자열 등이 올 수 있으며, 이 객체의 각 요소에 함수를 적용함.

map() 함수의 특징

  • 반환값: map() 함수는 반환값으로 map 객체를 돌려주며, 이를 리스트나 다른 반복 가능한 객체로 변환해서 사용해야 함.
  • 게으른 평가(Lazy Evaluation): map() 함수는 필요할 때만 값을 계산.
    list()for 루프 등으로 명시적으로 요소에 접근할 때만 계산이 발생.

map() 함수의 예시

예시 1: 리스트의 모든 요소에 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: 리스트의 모든 요소에 함수 적용

# 리스트의 각 요소에 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의 각 요소에 대해 호출

예시 3: 람다 함수와 map() 사용

# 람다 함수를 사용해 리스트의 각 요소에 2를 곱하기
numbers = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, numbers)

print(list(result))  # [2, 4, 6, 8, 10]

예시 4: 여러 개의 리스트에서 값을 동시에 처리

map() 함수는 두 개 이상의 반복 가능한 객체를 동시에 처리할 수 있다.

# 두 리스트의 요소를 더하는 예시
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]

result = map(lambda x, y: x + y, numbers1, numbers2)

print(list(result))  # [5, 7, 9]
  • 두 리스트 numbers1numbers2의 각 요소들이 람다 함수에 전달되고, 두 리스트의 요소가 더해짐.
  • 두 리스트는 같은 길이여야 정상적으로 동작함.

예시 5: 문자열 처리

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 객체를 반환할 뿐, 원본 리스트나 튜플은 변경되지 않는다.


profile
ʚȉɞ

0개의 댓글