map(function, iterable)
첫 번째 매개변수 👉 함수
두 번째 매개변수 👉 반복 가능한 자료형 (리스트, 튜플)
내장 함수 map은 함수와 반복 가능한 자료형을 입력받습니다. map은 입력받은 자료형의 각 요소를 매개변수로 들어온 함수가 수행한 결과를 묶어서 새로운 결과물로 돌려주는 함수입니다.
다음은 map 함수를 사용하지 않은 시 사용자 정의 함수를 사용하는 경우의 예시입니다.
two_times함수는 리스트 요소를 입력받아 각 요소에 2를 곱한 결과를 반환합니다.
def two_times(numberList):
result = [ ]
for number in numberList:
result.append(number*2)
return result
result = two_times([1, 2, 3, 4])
print(result)
# 결과 : [2, 4, 6, 8]
map 함수를 사용한다면 아래와 같이 코드를 바꿀 수 있습니다.
def two_times(x):
return x*2
result = list(map(two_times, [1, 2, 3, 4]))
print(result)
# 결과 : [2, 4, 6, 8]
📝 map함수는 결과 반환을 리스트가 아닌 map타입으로 리턴하기 때문에 list() 내장함수를 통해 list로 변환해주어야 합니다.
map함수의 매개변수로는 꼭 숫자의 리스트뿐만 아니라 아래와 같이 range(), 문자열 등의 형태도 사용이 가능합니다.
def two_times(x):
return x*2
result = list(map(two_times, [1, 2, 3, 4]))
print(result)
# 결과 : [2, 4, 6, 8]
result = list(map(two_times, range(10)))
print(result)
# 결과 : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
result = list(map(two_times, "apple"))
print(result)
# 결과 : ['aa', 'pp', 'pp', 'll', 'ee']
한 줄에 여러 개의 값 입력받기
input().split()을 이용해 한 줄로 여러 값을 받을 때 정수 또는 실수 값으로 받고 싶다면 참 곤란하죠.
이때 map을 함께 사용하면 간단하게 정수 또는 실수 값으로 변환이 가능합니다.
>>>list_num = list(map(int, input().split())
10 20 30 40 50 # 한 줄로 값 입력
>>>list_num
[10, 20, 30, 40, 50]
위 결과와 같이 문자열이 아닌 정수로 정상 입력된 것을 확인할 수 있습니다.
람다합수와 map함수
map함수의 첫 번째 인자로 앞에서 정의된 함수가 아니어도 이름이 없는 함수인 람다 함수도 대입이 가능합니다.
람다 함수를 이용해 짧은 코드를 더욱 간단하고 명료하게 함축할 수 있습니다.
# 정의 된 함수
def two_times(x):
return x*2
result = list(map(two_times, [1, 2, 3, 4, 5])
print(result)
# 결과 : [2, 4, 6, 8, 10]
# 람다 함수
result = list(map(lambda x: x * 2, [1, 2, 3, 4, 5]))
print(result)
# 결과 : [2, 4, 6, 8, 10]
'ETC > 알고리즘 & 문법' 카테고리의 다른 글
[알고리즘] 정렬 알고리즘 (Sorting Algorithm) (0) | 2022.02.21 |
---|---|
[알고리즘] 완전 탐색 • 브루트 포스 (Brute Force) (0) | 2022.02.16 |
[알고리즘] 재귀 함수 ( Recursive Function ) ( + 팩토리얼과 피보나치수열) (0) | 2022.02.14 |
[Python] 파이썬 기본 문법 - set (집합) (0) | 2022.02.09 |
[Python] 파이썬 기본 문법 - 연산자와 숫자 처리 함수 (+ 랜덤 함수) (0) | 2022.02.01 |