파이썬으로 코딩 공부를 하다 보면 람다 함수를 많이 볼 수 있습니다.
주로 코드를 간단하게 할 때 사용되는데요.
파이썬에서의 람다 함수에 대해 간략히 알아보겠습니다.
람다 함수는 다음과 같은 구조를 가집니다.
lambda arguments: expression
- lambda: 람다 함수를 정의하는 키워드입니다.
- arguments: 함수의 인자입니다.(0개 이상)
- expression: 단일 표현식으로 함수의 반환값입니다.
람다 함수는 일반 함수와 달리 이름이 없으며, 단일 표현식만을 포함할 수 있습니다.
이런 람다 함수의 특징으로는
- 간결성: 람다 함수는 한 줄로 정의되어 코드를 간결하게 만듭니다.
- 익명성: 이름이 없어 일회성으로 사용되는 경우가 많습니다.
- 함수형 프로그래밍: 함수를 인자로 전달하고나 반환할 때 유용합니다.
- 제한된 기능: 다른 함수와는 달리 복잡한 로직을 구현하기 어렵습니다.
람다 함수를 어떻게 활용하는지 살펴보겠습니다.
- 정렬
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)는 각 문자열의 길이를 반환하고, 이 람다 함수는 각 과일 이름의 길이를 정렬 기준으로 사용합니다.
- 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라는 반복 가능한 리스트에 요소들을 거듭제곱하여 반환한다는 람다 함수가 사용되었습니다.
- 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 객체로 반환합니다.
- filter() 함수의 기본 구문도 map이랑 동일합니다. filter(function, iterable)
- 함수형 프로그래밍
def apply_operation(x, y, operation): return operation(x, y) result = apply_operation(5, 3, lambda x, y: x + y) print(result) # 8
- apply_operation은 두 개의 숫자와 함수를 인자로 받습니다.
- lambda x, y: x + y는 apply_operation의 세 번째 인자로 저장됩니다.
- lambda x, y: x + y는 두 인자를 받아 그 합을 반환하는 간단한 함수입니다.
# 이 글의 내용 중 일부는 Perplexity AI의 도움을 받아 정보를 수집하고 정리하였으며, 추가적인 연구와 개인적인 견해를 더하였습니다.
'파이썬 관련 문법' 카테고리의 다른 글
파이썬의 구조분해 할당: 코드를 간결하고 강력하게 (0) | 2024.12.10 |
---|---|
불변성이 가져오는 이점: 파이썬 튜플의 효율적인 메모리 관리 (0) | 2024.12.10 |
파이썬 코딩 테스트를 위한 시간 복잡도 이해하기 (0) | 2024.12.09 |
선택 정렬(Selection Sort)이란 무엇인가? (0) | 2024.12.09 |
sys.stdin.readline()으로 입력 속도 높이기: 개행문자 처리부터 주의사항까지 (0) | 2024.12.08 |