[Python] 파이썬 lamda 람다 함수 사용법 활용 예제 모음

람다 함수는 간단한 익명 함수라고 표현할 수 있습니다. 일반적으로는 ‘def’ 키워드를 사용해서 함수를 생성하는데,

def myFunc(a, b):
    return a+b

이렇게 ‘def’ 키워드를 사용해서 정의한 함수 객체는 메모리에 저장되며 호출되기까지 기다립니다. 만약 함수가 단 한번만 호출될 함수라면 불필요할 메모리를 낭비하게 되는 것이죠. 이때 유용하게 활용할 수 있는 것이 람다 함수입니다.

람다 함수는 코드를 간결하게 유지할 수 있게 해주면서 메모리를 절약할 수 있게 해주는 것이 큰 장점이자 사용하는 이유입니다.

본 포스팅에서는 람다 함수 사용법을 다루며 활용 예제들도 모아봤습니다.

람다 함수 정의 | 문법

먼저, 람다 함수는 아래와 같은 형태로 정의됩니다.

lambda 인자 : 표현식

다수의 인자를 가질 수 있지만 표현식은 하나만 정의할 수 있는데요.

예로, 다음과 같은 간단한 함수는 람다 함수로 변형하여 사용할 수 있습니다.

# 일반 함수
def add(a, b):
    return a + b


add(2, 3)

# 람다 함수
(lambda a, b: a + b)(2, 3)

결과값:

람다 함수 예제 결과

예상하셨겠지만 둘 모두 같은 결과값을 반환합니다.

참고로, 람다 함수도 객체이다 보니 함수의 정의와 동시에 변수에 넣어서 추후에 재사용할 수도 있기는 합니다.

add = lambda a, b: a + b

add(2, 3)

람다 함수 예제 모음

람다 함수 정의하는 법과 사용법을 알아보았으니 이제 자주 쓰이는 람다 함수 활용들을 예제를 통해 알아보겠습니다.

다음부터 나오는 함수들은 람다 함수와 자주 같이 쓰이며 알아두면 유용할 때가 많습니다.

map() + lambda

map() 함수는 시퀀스(리스트, 튜플 등)에 한해 각 요소마다 함수를 적용해서 반환해줍니다. 두개의 인자를 받는데 첫 번째는 요소마다 호출할 함수, 두 번째는 시퀀스입니다.

다음은 리스트의 요소마다 1씩 더해줍니다.

list1 = [0,1,2,3,4]

list2 = list(map(lambda x: x+1, list1))
print(list2) 

결과값:

map 람다 함수 예제 결과

  • 여기서 lambda 함수는 요소의 개수만큼 호출되며 x는 각 리스트 안 요소를 의미합니다.
  • x는 map() 함수가 람다 함수에게 인자로 전해줍니다.
  • 위 예시는 요소마다 1씩 더해주고 리스트 형태로 생성한 뒤 list2 변수에 넣어줍니다.

reduce() + lambda

reduce() 함수는 시퀀스(리스트, 튜플 등)에 한해 각 요소들을 누적한 값을 반환합니다. 두개의 인자를 받는데 첫 번째는 누적 방식을 정의하는 함수, 두 번째는 시퀀스입니다.

다음은 리스트 요소들의 합을 구합니다.

from functools import reduce

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

listSum = reduce(lambda a, b: a + b, list1)

print(listSum)

결과값:

reduce 람다 함수 예제 결과

  • 여기서 reduce() 함수는 람다 함수에게 이전 두 요소의 합(a)과 다음 요소(b)를 인자로 전해주고, 람다 함수가 또 새로운 합을 구하는 방식으로 리스트가 끝날때까지 계속됩니다. ((((1+2)+3)+4)+5)
  • 이전 람다 함수 반환값(a)과 그 다음 요소(b)는 reduce() 함수가 람다 함수에게 인자로 전해주는 것입니다.
  • 마지막으로 호출되는 람다 함수의 반환값이 listSum이 됩니다.

filter() + lambda

filter() 함수는 시퀀스(리스트, 튜플 등)에 한해 조건에 맞는 요소들만 반환합니다. 두개의 인자를 받는데 첫 번째는 조건(filter)을 정의하는 함수, 두 번째는 시퀀스입니다.

다음은 리스트 요소들 중 짝수인 요소만 추출해서 새로운 리스트를 만듭니다.

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

listEven = list(filter(lambda x: (x % 2 == 0), list1))

print(listEven)

결과값:

filter 람다 함수 예제 결과

  • 람다 함수 “lambda x: (x % 2 == 0)”에서 x는 각 요소를 의미하며, x가 짝수인 경우 True 홀수면 False를 반환합니다. 
  • filter()는 True를 생성하는 요소만 유지하므로 False를 생성한 모든 홀수를 제거합니다.  
  • x는 filter() 함수가 람다 함수에게 인자로 전해주고, 람다 함수는 요소 개수만큼 호출됩니다.
  • 위 예시는 기존 리스트에서 짝수인 요소들로만 새 리스트를 생성하고 listEven 변수에 넣어줍니다.

답글 남기기