728x90
반응형
리스트를 [1, 2, 3, 4, 5] --> [10, 20, 30, 40, 50] 과 같이 변환하려면 어떻게 할까? 먼저, 생각나는 것은 for 문을 사용해볼 수 있을 것이다.
list_orig = [1, 2, 3, 4, 5]
list_result = []
for num in list_orig:
list_result.append(num * 10)
print(list_result)
이것을 map 함수로도 구현할 수 있는데, map 함수의 형식을 먼저 살펴보자.
map(조작함수, 순회가능한객체)
조작함수 부분은 위의 for 구문에서 num * 10 의 기능을 해주는 함수이고, 순회가능한객체는 리스트, 튜플 등이 해당된다.
일단 조작함수부터 구현해보자.
def mul_ten(num):
return num * 10
이제, 위의 조작함수과 함께 map 함수를 사용해서 구현해보자.
list_orig = [1, 2, 3, 4, 5]
list_result = map(mul_ten, list_orig)
print(type(list_result))
그런데, map 함수가 리턴하는 값은 map 객체이므로, list 내장함수로 map객체를 리스트로 변환해주어야 한다.
list_orig = [1, 2, 3, 4, 5]
list_result = list(map(mul_ten, list_orig))
print(list_result)
이렇게, 조작함수가 간단한 경우에는 lambda 함수로 작성하는 경우가 많다.
list_orig = [1, 2, 3, 4, 5]
list_result = list(map(lambda num: num*10, list_orig))
print(list_result)
이렇게 하면, for구문을 이용해서 구현한 것보다 라인수가 많이 줄어든 것을 알 수 있다.
참고로, 이 것을 또 다른 방법으로... 리스트 내포(list comprehesion) 구문을 이용해서도 가능하다.
list_orig = [1, 2, 3, 4, 5]
list_result = [num* 10 for num in list_orig]
print(list_result)
lambda 함수와 리스트 내포에 대해서는 별도로 글을 남겼으니, 해당 글을 참고 바란다.
그리고, map 함수를 사용할때, 2개 이상의 리스트를 조작해서 새로운 리스트를 만들때에도 사용할 수 있다.
[1, 2, 3] 와 [4, 5, 6] 을 이용해서 각 항목을 더해서 [5, 7, 9] 리스트를 만들어낼 수 있다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list_result = list(map(lambda x, y: x + y, list1, list2))
print(list_result)
728x90
반응형
'Programming > Python' 카테고리의 다른 글
파이썬 filter 함수를 알아보자 (1) | 2024.11.29 |
---|---|
파이썬 lambda 함수 (0) | 2024.11.15 |
파이썬 타입 힌트 알아보기 (0) | 2024.11.05 |
[ ... for ... if ... ] 파이썬 리스트 내포 구문 (List comprehension) (0) | 2024.11.01 |
.py(파이썬파일)을 .exe(실행파일)로 변환하기 (feat. PyInstaller) (0) | 2024.09.21 |