파이썬 map과 lambda함수의 활용

Updated:

1 minute read

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]

Categories:

Updated: