map

hyyyynjn·2021년 5월 21일
0

python 정리

목록 보기
11/26
post-thumbnail

map

list의 원소를 지정한 함수로 처리해주는 함수이다

  • 원본 list를 변경하지 않고 새 list를 생성한다.
  • map함수는 map타입으로 결과를 리턴한다
    • list, tuple 등으로 변환해야한다
      👉 list(map(함수, iterable))
      👉 tuple(map(함수, iterable))

✋예제

✍실수 리스트의 모든 요소를 정수로 변환하기

# ❓ map 없이
a = [1.2, 2.5, 3.7, 4.6]
for i in range(len(a)):
    a[i] = int(a[i])
print(a) # [1, 2, 3, 4]

# ❗ map 사용
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int, a))
print(a) # [1, 2, 3, 4]

✍리스트의 모든 요소 제곱하기

# ❓ map 없이
def two_times(numberList):
    result = [ ]
    for number in numberList:
        result.append(number*2)
    return result

result = two_times([1, 2, 3, 4])

# ❗ map 사용 (일반함수)
def two_times(x): 
    return x*2
print(list(map(lambda a: a*2, [1, 2, 3, 4]))) # [2, 4, 6, 8]

# ❗❗ map 사용 (람다식)
print(list(map(lambda a: a*2, [1, 2, 3, 4]))) # [2, 4, 6, 8]

✍리스트 요소 찾기

users = [{'mail': 'gregorythomas@gmail.com', 'name': 'Brett Holland', 'sex': 'M'},
 {'mail': 'hintoncynthia@hotmail.com', 'name': 'Madison Martinez', 'sex': 'F'},
 {'mail': 'wwagner@gmail.com', 'name': 'Michael Jenkins', 'sex': 'M'},
 {'mail': 'daniel79@gmail.com', 'name': 'Karen Rodriguez', 'sex': 'F'},
 {'mail': 'ujackson@gmail.com', 'name': 'Amber Rhodes', 'sex': 'F'}]

# ❗ map 사용 (일반함수)
def conver_to_name(user):
    first, last = user["name"].split()
    return {"first": first, "last": last}
    
for name in map(conver_to_name, users):
    print(name)

# ❗❗ map 사용 (람다식)
for sex in map(lambda u: "남" if u["sex"] == "M" else "여", users):
    print(sex)
    
>>> list(map(lambda u: u["mail"], users))
['gregorythomas@gmail.com', 'hintoncynthia@hotmail.com', 'wwagner@gmail.com', 'daniel79@gmail.com', 'ujackson@gmail.com']

>>> tuple(map(lambda u: u["mail"], users))
('gregorythomas@gmail.com', 'hintoncynthia@hotmail.com', 'wwagner@gmail.com', 'daniel79@gmail.com', 'ujackson@gmail.com')

0개의 댓글