파이썬 map() 함수

udonehn·2023년 9월 23일

개요

  • PS를 하며 map() 함수를 사용하던 중, 다음 코드를 실행하니 아무것도 출력 되지 않았다.
    • map*(lambda x:*print*(x*2), *list*(*map*(*int*,*input*().split())))
  • 하지만 이를 list()로 감싸니 정상적으로 출력이 되었다.
    • list(map*(lambda x:*print*(x*2), *list*(*map*(*int*,*input*().split()))))

따라서 map 객체에 대해 찾아보았다.

map() 함수 및 map 객체의 특징

  • map()을 통해 반환된 객체는 map 객체이며, 이터레이터(iterator, 순회 가능한 객체)이다.
    • list가 아니기 때문에 필요시 list()를 사용해 리스트 형식으로 변환하여야 한다. (python3부터)
  • 한 번에 데이터를 계산하지 않고, 필요할 때에만 계산한다.
    • 입력 데이터가 크거나 무한할 때 메모리를 효율적으로 사용할 수 있다.
  • 한 번만 이터레이션 하면 다시 이터레이션 할 수 없다. 필요하다면 다시 생성해야 한다.
  • 인덱싱을 할 수 없다.

관련 메서드 및 사용법

기본 사용

map(function, iterable)

예시 1 - 두 수를 입력받아 int형으로 언패킹하기

X, Y = map(int, input().split()

예시 2 - 여러 수를 입력 받아 int형으로 바꾸고 list 객체로 변환하기

my_list = list(map(int, input().split())

예시 3 - lambda와 함께 사용하기

number = [1,2,3,4]
new_number = list(map(lambda x:x*2, number))
# [2, 4, 6, 8] 출력

예시 4 - next()와 함께 사용하기

number = [1,2,3,4]
map_number = map(lambda x:x*2, number)
result1 = next(map_number)
result2 = next(map_number)
print(result1, result2)
# 2 4 출력
  • next() 함수는 다음 값을 가져온다.

개요에서 발견한 문제점

  • map 객체는 입력 데이터를 한 번에 처리하지 않기 때문에, map 객체 생성만으로는 lambda 함수가 실행되지 않은 것이다.
  • list()로 변환 시 변환 중에 모두 처리됨을 알 수 있다.
profile
안녕하세요. 만나서 반갑습니다.

0개의 댓글