🔥 람다 함수와 함수형 프로그래밍 개념

461자
6분

람다 함수(lambda function)는 이름 없이 선언된 간단한 함수로, 주로 한 줄의 간결한 코드로 이루어져 있습니다. 파이썬에서 람다 함수는 lambda 키워드를 사용하여 정의됩니다. 함수형 프로그래밍(functional programming)은 불변성(immutability), 순수 함수(pure functions), 고차 함수(higher-order functions) 같은 개념을 중심으로 데이터 처리와 계산을 수행하는 프로그래밍 패러다임입니다.

람다 함수의 정의와 기본 사용법

람다 함수는 lambda 키워드를 이용해 정의합니다. 기본 형태는 다음과 같습니다:

lambda arguments: expression
 
python

예를 들어, 두 수를 더하는 람다 함수는 다음과 같이 작성할 수 있습니다:

add = lambda x, y: x + y
print(add(5, 3))  # 결과: 8
 
python

람다 함수의 활용 사례

람다 함수는 정렬, 필터링, 데이터 변환 등 다양한 곳에서 유용하게 사용됩니다. 예를 들어, 리스트의 각 요소를 제곱하는 경우를 생각해 봅시다:

numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x ** 2, numbers)
print(list(squared))  # 결과: [1, 4, 9, 16, 25]
 
python

람다 함수와 map(), filter(), reduce() 함수의 결합

map(), filter(), reduce() 함수는 람다 함수와 자주 함께 사용되는 내장 함수입니다.

  • map() 함수는 모든 요소에 함수를 적용합니다.
  • filter() 함수는 조건을 만족하는 요소만 필터링합니다.
  • reduce() 함수는 요소들을 축적하여 하나의 값으로 만듭니다. (functools 모듈 필요)

예를 들어, 짝수만 추출하고 싶을 때는 다음과 같이 할 수 있습니다:

numbers = [1, 2, 3, 4, 5]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # 결과: [2, 4]
 
python

람다 함수의 제약 사항과 주의점

람다 함수는 간결하지만, 몇 가지 제약이 있습니다. 가장 중요한 것은 람다 함수 내에서 복잡한 로직을 표현하기 어렵다는 점입니다. 람다 함수는 단일 표현식만을 지원하므로, 복잡한 조건문이나 반복문을 사용할 수 없습니다.

함수형 프로그래밍의 핵심 개념과 파이썬에서의 활용

함수형 프로그래밍은 불변성, 순수 함수, 고차 함수 등을 핵심 개념으로 삼습니다. 파이썬에서 이러한 개념들은 리스트 컴프리헨션(list comprehension), 제너레이터(generator), 데코레이터(decorator) 등을 통해 구현될 수 있습니다. 예를 들어, 리스트 컴프리헨션을 사용하여 짝수만 추출하는 코드는 다음과 같습니다:

numbers = [1, 2, 3, 4, 5]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)  # 결과: [2, 4]
 
python

람다 함수와 일반 함수의 비교

람다 함수와 일반 함수는 각각의 사용 상황에 따라 장단점이 있습니다. 람다 함수는 간결하고 한 줄로 표현이 가능하지만, 복잡한 로직에는 적합하지 않습니다. 반면, 일반 함수는 더 복잡한 로직을 구현할 수 있으나, 코드가 길어질 수 있습니다.

고급 람다 함수 사용법

고급 람다 함수 사용법에는 여러 인자를 취하는 람다 함수, 람다 함수를 반환하는 람다 함수, 람다 함수 내에서 조건문 사용 등이 포함됩니다. 다음은 조건문을 포함한 람다 함수의 예입니다:

max_number = lambda x, y: x if x > y else y
print(max_number(5, 7))  # 결과: 7
 
python

연습문제

  1. 리스트 [1, 2, 3, 4, 5]의 각 요소를 3배로 만드는 람다 함수를 map()과 함께 사용하여 구현해 보세요.
  2. 문자열 리스트 ['apple', 'banana', 'cherry']에서 글자 수가 5 이상인 단어만을 선택하는 람다 함수를 filter()와 함께 사용해 보세요.
  3. 주어진 숫자 리스트의 최대값을 찾는 람다 함수를 작성하세요.