파이썬 map과 lambda함수의 활용
Updated:
map 함수
- 리스트나 튜플 등 여러 데이터에 돌아가며 함수를 적용시켜주는 함수
- map(함수, 복수개의 데이터(리스트, 튜플 등) )
- for문으로 작성해야하는 코드를 더 간결하게 할 수 있게 해줍니다.
for문으로 리스트 각 요소에 1씩 더해주는 코드를 작성해봅니다.
def add_one(x):
return x + 1
ls = []
for i in range(1,11):
ls.append(add_one(i))
ls
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
아래처럼 map함수를 이용하여 더 간단하게 만들 수 있습니다.
def add_one(x):
return x + 1
list(map(add_one,range(1,11)))
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
안타깝게도 아래처럼 x를 넣은 연산을 할 수 없습니다. 미리 정의된 함수만 인자로 넣을 수 있습니다.
list(map(x + 1,range(1,11)))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-63-d5e223f442ab> in <module>
----> 1 list(map(x + 1,range(1,11)))
NameError: name 'x' is not defined
람다 함수를 같이 사용하면 x를 넣은 연산을 적용할 수 있어 더욱 편리합니다.
lambda 함수
- 함수를 정의하지 않고 만들어 사용할 수 있습니다.
- (lambda 매개변수 : 결과값)
- 코드가 더 간결해지고 메모리를 절약할 수 있습니다.
1을 더하는 함수 add_one을 def로 만들어봅니다.
def add_one(x):
return x + 1
add_one(3)
4
람다 함수를 이용하면 함수생성없이 아래처럼 만들 수 있습니다.
(lambda x : x+1)(3)
4
map과 lambda의 활용
- map과 lambda를 같이 활용하면 리스트에 원하는 수식을 편하게 적용할 수 있습니다.
def와 for문을 이용해 리스트의 모든 요소에 1을 더해 출력해봅니다.
def add_one(x):
return x + 1
ls = []
for i in range(1,11):
ls.append(i+1)
ls
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
map과 lambda를 이용하면 아래처럼 간단하게 표현 가능합니다.
list(map(lambda x: x+1, range(1,11)))
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]