본문 바로가기
파이썬 관련 문법

코드를 간단하게 만드는 법: 파이썬 람다(lambda) 함수

by arctis7p 2024. 12. 9.

파이썬으로 코딩 공부를 하다 보면 람다 함수를 많이 볼 수 있습니다.

주로 코드를 간단하게 할 때 사용되는데요.

파이썬에서의 람다 함수에 대해 간략히 알아보겠습니다.

 

람다 함수는 다음과 같은 구조를 가집니다.

lambda arguments: expression
  • lambda: 람다 함수를 정의하는 키워드입니다.
  • arguments: 함수의 인자입니다.(0개 이상)
  • expression: 단일 표현식으로 함수의 반환값입니다.

람다 함수는 일반 함수와 달리 이름이 없으며, 단일 표현식만을 포함할 수 있습니다.

 

이런 람다 함수의 특징으로는

  1. 간결성: 람다 함수는 한 줄로 정의되어 코드를 간결하게 만듭니다.
  2. 익명성: 이름이 없어 일회성으로 사용되는 경우가 많습니다.
  3. 함수형 프로그래밍: 함수를 인자로 전달하고나 반환할 때 유용합니다.
  4. 제한된 기능: 다른 함수와는 달리 복잡한 로직을 구현하기 어렵습니다.

 

람다 함수를 어떻게 활용하는지 살펴보겠습니다.

  1. 정렬
    fruits = ['apple', 'banana', 'cherry']
    sorted_fruits = sorted(fruits, key=lambda x: len(x))
    print(sorted_fruits)  # ['apple', 'banana', 'cherry']
     
    • sorted() 함수는 주어진 iterable(리스트, 튜플, 문자열 등)을 정렬하여 새로운 정렬된 리스트를 반환합니다.
    • 여기서 key 매개변수가 중요한데, key 매개변수가 람다함수와 연계되며 람다함수가 key 매개변수에게 간단한 정렬 기준을 제공합니다.
    • 이 예에서, x는 리스트의 각 요소(여기서는 과일 이름)를 나타냅니다.
    • len(x)는 각 문자열의 길이를 반환하고, 이 람다 함수는 각 과일 이름의 길이를 정렬 기준으로 사용합니다.
  2. map() 함수와 함께 사용
    numbers = [1, 2, 3, 4, 5]
    squared = list(map(lambda x: x**2, numbers))
    print(squared)  # [1, 4, 9, 16, 25]
     
    • map() 함수는 주어진 함수를 반복 가능한(iterable) 객체의 모든 요소에 적용합니다.
    • 기본 구문은 map(function, iterable)입니다.
      • function: 각 요소에 적용할 함수
      • iterable: 함수를 적용할 반복 가능한 객체
    • 이 예제에서는 numbers라는 반복 가능한 리스트에 요소들을 거듭제곱하여 반환한다는 람다 함수가 사용되었습니다.
  3. filter 함수와 함께 사용
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
    print(even_numbers)  # [2, 4, 6, 8, 10]
     
    • filter() 함수의 기본 구문도 map이랑 동일합니다. filter(function, iterable)
      • 단, function은 각 요소를 판단하는 함수로 True or False를 반환합니다.
    • 이 예제에서 lambda 함수는 짝수일 경우 True를 반환하고, 홀수일 경우 False를 반환합니다.
    • filter 함수는 이 람다 함수가 반환하는 요소들 중 True를 반환하는 요소만을 선택합니다.
      • 각 숫자에 대한 람다 함수가 호출됩니다.
      • 람다 함수가 True를 반환하는 요소만 선택됩니다.
    • filter 함수는 결과를 filter 객체로 반환합니다.
  4. 함수형 프로그래밍
    def apply_operation(x, y, operation):
        return operation(x, y)
    
    result = apply_operation(5, 3, lambda x, y: x + y)
    print(result)  # 8
     
    1. apply_operation은 두 개의 숫자와 함수를 인자로 받습니다.
    2. lambda x, y: x + y는  apply_operation의 세 번째 인자로 저장됩니다.
    3. lambda x, y: x + y는 두 인자를 받아 그 합을 반환하는 간단한 함수입니다.

 

 

# 이 글의 내용 중 일부는 Perplexity AI의 도움을 받아 정보를 수집하고 정리하였으며, 추가적인 연구와 개인적인 견해를 더하였습니다.