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')