본문 바로가기

카테고리 없음

파이썬 람다(lambda) 함수

파이썬으로 코딩을 하다 보면 종종 람다 함수를 사용할 때가 더 편한 경우가 있습니다. 여러 줄의 함수로 작성해야 할 것을 단 한 줄의 함수로 정리할 수 있기 때문입니다. 하지만 람다 함수를 처음 보면 뭔가 이상하게 생겼다는 생각도 들고 낯선 느낌이 듭니다. 사실 알고 보면 람다 함수는 그저 다른 종류의 함수입니다.

 

람다 함수를 사용할 때는 이렇게 써주면 됩니다.

 

lambda 파라미터: 표현식

 

예를 들어 두 개의 숫자를 더한 뒤 그 값을 반환하는 다음과 같은 함수가 있습니다.

 

def sum(x, y):
  return x + y

print(sum(4,5))
# 9

 

위의 함수를 람다 함수를 이용해서 표현하면 아래와 같습니다.

 

print((lambda x, y: x + y)(4,5))
# 9

 

또는 람다 함수를 변수에 할당하여 사용할 수도 있습니다. 이 경우 변수 이름을 함수처럼 사용할 수 있습니다.

 

sum_two_numbers = lambda x, y: x + y

print(sum_two_numbers(4,5))
# 9

 

람다(lambda)를 사용하면 좋은 경우 

재사용할 함수가 아니라면 간단하게 람다(lambda)를 사용하는 것은 좋은 방법입니다. 특히 그 함수가 다른 함수의 매개 변수로 들어가는 경우라면 더 좋습니다. 이런 경우의 가장 흔한 사례가 map 함수를 사용할 때입니다.

 

map 함수를 사용할 때는 이렇게 써주면 됩니다. 자료형의 각 요소 순회하며 함수에 집어넣고 그 결과를 반환합니다. 

 

map(함수, 반복 가능한 자료형)

 

예를 들어 [1, 2, 3, 4, 5]와 같은 리스트가 있을 때, 이 리스트의 각 요소를 2배씩 증가시키고 싶다면 다음과 같은 코드가 필요합니다. map 함수의 결과 값을 리스트로 나타내기 위해서는 list 함수를 사용해야 합니다.

 

def double(x):
  return x * 2

numbers = [1,2,3,4,5]

new_numbers = list(map(double, numbers))
print(new_numbers)
# [2, 4, 6, 8, 10]

 

이번에는 double이라는 함수 자리를 람다를 사용해서 새로 코드를 작성하겠습니다.

 

numbers = [1,2,3,4,5]
print(list(map(lambda x: x * 2, numbers)))
# [2, 4, 6, 8, 10]

 

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.