Python에서 객체를 반복하기 위한 map 함수
숫자를 제곱하는 함수 square가 있다고 가정해 봅시다.
그리고 이 함수를 적용해야 할 요소들의 목록이 있습니다:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
Python에서 이 문제를 해결하기 위해 특수 함수 map를
사용할 수 있습니다.
이 함수는 매개변수로 함수와 그 함수를 적용해야 할 목록을 받습니다.
예제를 해결하기 위해 map을 사용해 봅시다:
res = map(square, lst)
print(res)
모든 목록은 다른 복잡한 객체와 마찬가지로 Python 시스템 메모리에서 많은 공간을 차지합니다. 따라서 리소스를 절약하기 위해 코드 실행 후에는 새로운 목록이 아니라 특수한 반복 가능한 map 객체가 반환됩니다:
<map object at 0x000001F16674BA00>
이것을 루프로 반복해 봅시다:
for el in res:
print(el)
결과적으로 새 목록의 모든 요소가 출력됩니다:
4
9
36
64
225
map 객체에서 새 목록을 생성하려면
함수 list를 적용해야 합니다:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
결과적으로 다음 목록이 출력됩니다:
[4, 9, 36, 64, 225]
또한, map 함수를 사용할 때 첫 번째 매개변수로
람다 함수를 지정할 수 있습니다.
람다 함수를 사용하여 이전 예제를 다시 작성해 봅시다:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
다음 코드를 람다 함수를 사용하여 다시 작성하세요:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
다음 코드를 람다 함수를 사용하여 다시 작성하세요:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))