🔥 람다 함수와 함수형 프로그래밍 개념
강의 목차
람다 함수(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, 2, 3, 4, 5]
의 각 요소를 3배로 만드는 람다 함수를map()
과 함께 사용하여 구현해 보세요. - 문자열 리스트
['apple', 'banana', 'cherry']
에서 글자 수가 5 이상인 단어만을 선택하는 람다 함수를filter()
와 함께 사용해 보세요. - 주어진 숫자 리스트의 최대값을 찾는 람다 함수를 작성하세요.