[Python] 파이썬 람다(lamda) 사용법 & 예제 총정리

람다식(lambda expression) , 람다함수(lambda function)라는 용어를 들어보셨나요? 이 용어들은 익명 함수(anonymous function)를 표현하는 방법으로 익명 함수는 이름이 없는 함수를 뜻합니다. 즉, 함수를 정의할 때 함수의 이름을 명시적으로 지정하지 않고, 필요한 매개변수와 함수 본문만을 사용하여 함수를 생성하는 것을 의미합니다. 특정 기능을 수행하는 함수들을 한 줄로 작성이 가능하기 때문에 주로 간단한 작업을 수행하는 함수나 일회성으로 사용되는 함수를 정의할 때 사용합니다.

 

람다식 특징

  • 람다식은 이름이 없는 익명 함수로 정의됩니다.
  • 주로 한 줄로 간단한 연산을 수행하는 함수를 정의할 때 사용됩니다.
  • 람다식은 변수에 할당하거나 다른 함수(map, filter, sorted)등의 인자로 전달할 수 있습니다.
  • 함수를 간단하게 표현할 수 있어서 코드를 더 간결하게 만들 수 있습니다.

 

 람다식 사용법 

람다식의 구문

람다식은 다음과 같은 구문으로 작성됩니다:

lambda arguments: expression
  • lambda: 람다함수를 명시하는 키워드로 "lambda" 키워드로 시작합니다.
  • arguments: 함수의 인자를 나열하는 부분입니다. 인자는 콤마로 구분되며, 필요한 만큼 인자를 정의할 수 있습니다.
  • expression: 함수의 반환값을 계산하는 식을 나타내는 부분입니다.

여기서 lambda는 람다 키워드이며, 매개변수는 함수에 전달되는 입력 값(parameter)을 나타내고, 표현식은 이 매개변수를 이용하여 연산을 수행하고 결과 값을 반환하는 코드를 나타냅니다. 위와 같이 람다식은 일반적으로 한 줄의 간단한 함수를 정의할 때 사용되며, 함수 이름 없이 함수를 정의하고 사용할 수 있습니다.

 

 

람다식 사용 예제

add = lambda x, y: x + y
result = add(2, 3)
print(result)

결과 : 5

 

간단한 람다식을 사용하여 함수를 만들어 보겠습니다. 가장 이해하기 쉬운 예시가 두 수를 받아서 더하는 함수라고 생각합니다. 위의 예제에서 lambda x, y: x + y는 두 개의 매개변수 x와 y를 받아서 그들을 더하는 람다 함수를 정의하고, 이 함수를 add 변수에 할당한 후 호출하여 결과를 출력합니다.

 

 

람다식 if문 활용 예제

# 주어진 숫자가 짝수인지 홀수인지 판별하는 람다 함수
is_even = lambda x: True if x % 2 == 0 else False

print(is_even(4))
print(is_even(7))

결과 ↓

True

False

 

람다식에서 if문을 표현하고 싶다면 삼항 연산자(if-else)를 사용하여 조건에 따른 값을 반환하도록 람다 함수를 정의하시면 됩니다. 위의 예제에서는 is_even 람다 함수는 주어진 숫자 x가 짝수인 경우 True를 반환하고, 홀수인 경우 False를 반환합니다. 

 

 

람다식 for문 활용 예제

# 리스트의 각 요소를 두 배로 만드는 람다 함수
numbers = [1, 2, 3, 4, 5]
double_numbers = [(lambda x: x * 2)(x) for x in numbers]

print(double_numbers)

결과: [2, 4, 6, 8, 10]

 

for문에서 람다함수를 사용하고 싶다면 위와 같은 방법을 생각할 수 있습니다. 위의 예제에서는 주어진 리스트의 각 요소를 두 배로 만들어 새로운 리스트를 생성하는 함수를 람다식을 사용하여 작성해 보았습니다. (lambda x: x * 2)(x) 부분이 람다 함수를 호출하는 부분이고, for x in numbers 부분이 리스트의 각 요소를 반복적으로 처리하는 부분입니다. 하지만 위와 같이 for문에서 람다식을 사용하는 것보다는 map이나 filter처럼 반복이 가능한 함수들을 사용하면 조금 더 가독성이 좋은 코드를 만들 수 있다고 생각합니다.

 

※ 참고로 람다식(lambda 함수) 내에서 직접적으로 for 루프를 사용할 수는 없습니다. 람다 함수는 주로 간단한 표현식만을 가질 수 있어 반복문과 같이 복잡한 루프 로직을 담는 데는 적합하지 않습니다.

 


 

 람다식 실전 적용 예제 

람다식의 장점은 코드를 간결하게 만들고 가독성이 좋게 만든다는데 있습니다. 그래서 함수 안에 간단한 함수를 중첩 사용하여야 할 때는 람다식을 종종 사용합니다. 특히 반복문이 내장되어 있는 map, filter와 함께 사용할 때 간결하고 효율적인 코드를 작성할 수 있습니다.

 

map 함수와 함께 사용하여 리스트의 각 요소에 함수를 적용할 때

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)

결과 : [1, 4, 9, 16, 25]

 

 

filter 함수와 함께 사용하여 조건에 맞는 요소를 걸러낼 때

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)

결과 : [2, 4, 6, 8]

 

위와 같이 map 함수나 filter 함수는 단독으로 사용하기보다는 다른 함수와 함께 사용되는 경우가 많은데 이럴 때는 람다함수로 표현하면 코드를 보다 간결하게 작성할 수 있고 함수형 프로그래밍의 개념과도 잘 어울리기 때문에 람다함수로 만들어주시면 좋을 것 같습니다.

 

댓글

Designed by JB FACTORY