Python을 배워보자/11. 기타 심화

파이썬 람다 표현식

_Blue_Sky_ 2024. 9. 26. 09:40
728x90

파이썬 심화: 람다 표현식 상세 가이드

람다 표현식이란 무엇일까요?

파이썬에서 람다 표현식은 간결하고 익명의 함수를 생성하는 방법입니다. def 키워드를 사용하여 일반 함수를 정의하는 것과 달리, 람다 표현식은 한 줄로 함수를 표현할 수 있어 코드를 더욱 간결하게 만들 수 있습니다. 주로 고차 함수의 인자로 전달하거나 간단한 연산을 수행할 때 사용됩니다.

기본 구조:

lambda 매개변수: 표현식
 
  • lambda: 람다 표현식을 정의하는 키워드입니다.
  • 매개변수: 함수에 전달될 인수입니다. 여러 개의 인수를 전달할 수 있으며, 튜플 형태로 받을 수도 있습니다.
  • 표현식: 함수의 결과를 반환하는 식입니다.

예시:

add = lambda x, y: x + y
result = add(3, 4)  # result는 7이 됩니다.
 

위 예시에서 add는 두 수를 더하는 람다 함수입니다. xy는 매개변수이고, x + y는 결과를 반환하는 표현식입니다.

람다 표현식의 특징

  • 익명성: 함수 이름이 없어서 한 번 사용하고 버릴 수 있습니다.
  • 간결성: 한 줄로 함수를 표현하여 코드를 간결하게 만들 수 있습니다.
  • 고차 함수와의 호환성: map, filter, reduce 등의 고차 함수의 인자로 자주 사용됩니다.
  • 제한된 기능: 복잡한 로직은 구현하기 어렵고, 일반 함수에 비해 표현력이 제한적입니다.

람다 표현식 활용 예시

1. 고차 함수와 함께 사용하기

  • map: 각 요소에 함수를 적용하여 새로운 리스트를 생성합니다.
    numbers = [1, 2, 3, 4]
    squared = list(map(lambda x: x**2, numbers))  # squared는 [1, 4, 9, 16]이 됩니다.
    
     
  • filter: 특정 조건을 만족하는 요소만 추출하여 새로운 리스트를 생성합니다.
    numbers = [1, 2, 3, 4, 5]
    even_numbers = list(filter(lambda x: x % 2 == 0, numbers))  # even_numbers는 [2, 4]가 됩니다.
    
     
  • reduce: 리스트의 요소들을 누적하여 하나의 값으로 축소합니다.
    from functools import reduce
    numbers = [1, 2, 3, 4]
    product = reduce(lambda x, y: x * y, numbers)  # product는 24가 됩니다.
    
     

2. 정렬 기준으로 사용하기

fruits = ['banana', 'apple', 'orange']
fruits.sort(key=lambda x: x[-1])  # 마지막 글자 기준으로 정렬
 

3. 간단한 연산 수행하기

result = (lambda x: x*2)(5)  # result는 10이 됩니다.
 

람다 표현식의 장단점

장점:

  • 코드를 간결하게 만들 수 있습니다.
  • 고차 함수와의 조합을 통해 다양한 기능을 구현할 수 있습니다.
  • 일회성 함수를 정의하는 데 유용합니다.

단점:

  • 복잡한 로직은 구현하기 어렵습니다.
  • 가독성이 떨어질 수 있습니다.
  • 일반 함수에 비해 표현력이 제한적입니다.

언제 람다 표현식을 사용해야 할까요?

  • 간단한 함수를 한 번만 사용할 때
  • 고차 함수의 인자로 함수를 전달할 때
  • 코드를 더욱 간결하게 만들고 싶을 때

결론

람다 표현식은 파이썬에서 코드를 간결하게 만들고 가독성을 높이는 데 도움이 되는 강력한 도구입니다. 하지만 모든 상황에서 람다 표현식을 사용하는 것이 좋은 것은 아닙니다. 코드의 가독성과 유지보수성을 고려하여 적절하게 사용해야 합니다.

추가적으로 알아두면 좋은 점

  • 람다 표현식은 다른 함수 안에서 중첩되어 정의될 수 있습니다.
  • 람다 표현식은 클로저를 지원합니다. 즉, 람다 표현식은 자신이 정의된 환경의 변수에 접근할 수 있습니다.

 

728x90

'Python을 배워보자 > 11. 기타 심화' 카테고리의 다른 글

파이썬 정규 표현식  (0) 2024.09.26
파이썬 컴프리헨션  (0) 2024.09.26
파이썬 데코레이터  (0) 2024.09.26