본문 바로가기

python

python map()

map()은 파이썬의 내장함수이며, 여러 개의 데이터를 한번에 다른 형태로 변환하기 위해서 사용된다.

여러 개의 데이터를 담고 있는 list, tuple을 대상으로 주로 사용하는 함수이다.

사용법에 대해서 알아보면 map(변환 함수, 순회 가능한 데이터)

map()은 두번째 인자로 넘어온 데이터가 담고 있는 모든 데이터에 변환 함수를 적용하여 다른 데이터를 반환한다.

간단한 예제로 보면

# 3개의 dict을 가진 list이다.
users = [
  {'mail':'test0@test.com', 'name': 'Brett Holland', 'gender': 'M'},
  {'mail':'test1@test.com', 'name': 'Madison Martinez', 'gender': 'F'},
  {'mail':'test2@test.com', 'name': 'Michael Jenkins', 'gender': 'M'}
]

# 위의 데이터중 users의 name중 first, last를 분리해서 뽑아내려면
def conver_to_name(user):
      first, last = users['name'].split()
    return {'first': first, 'last': last}

for user in map(conver_to_name, users):
      print(user)

위 예제에서 for문을 보면 map() 함수를 사용했는데, map() 함수의 첫번째 인자를 통해 변환 함수가 출력 되는 상황임을 알 수 있다.

변환 함수의 길이 가 길다면 함수를 선언하는것이 가독성에 좋지만 만약 짧다면 lambda 함수로 간단 명료하게 코드를 짤 수 있다.

for mail in map(lamdba user: '남' if user['gender'] == 'M' else '여', users)
        print(mail)

map() 함수 결과 데이터 반환

map() 함수로 변환된 결과를 콘솔에 출력만 했었지만, 결과가 많은 경우 데이터를 list나 tuple로 저장해야한다.

그렇다고 번거롭게 길거나 그렇지 않고 list(), tuple()로 씌워주기만 하면된다.

# list()
list_map = list(map(lamdba user: user['mail'], users))

# tuple()
tuple_map = tuple(map(lamdba user: user['mail'], users))