람다 함수란?
람다(lambda) 함수는익명 함수(anonymous function)라고도 부르며, 한 줄짜리 함수를 정의하거나, 함수(ex- sorted() ,filter(),map()등) 를 인자로 전달해야 하는 경우에 매우 유용하게 사용 됩니다.
def 키워드를 사용한 일반 함수와 달리, lambda키워드를 사용하여 정의합니다.
람다 함수는 다음과 같은 형태로 정의됩니다.
lambda 인자 : 표현식
람다(lambda) 함수의 활용 예제
1. map() 함수와 함께 사용
map() 함수는 시퀀스(리스트, 튜플 등)의 모든 요소에 함수를 적용한 결과를 반환합니다.
이 때, map() 함수와 함께 람다 함수를 사용할 수 있습니다.
예시) [1,2,3,4,5] -> [2,4,6,8,10]
lst = [1, 2, 3, 4, 5]
이 리스트의 각 요소에 2를 곱하고자 한다면 다음과 같이 map() 함수와 람다 함수를 사용할 수 있습니다.
new_lst = list(map(lambda x: x * 2, lst))
print(new_lst)
위 코드는 map() 함수와 람다 함수를 사용하여 리스트의 각 요소에 2를 곱한 결과를 new_lst 리스트에 저장합니다.
출력 결과는 다음과 같습니다.
[2, 4, 6, 8, 10]
2. filter() 함수와 함께 사용
filter() 함수는 시퀀스(리스트, 튜플 등)의 모든 요소 중에서 조건에 맞는 요소만을 반환합니다.
이 때, filter() 함수와 함께 람다 함수를 사용할 수 있습니다.
예시) [1,2,3,4,5] -> [1,3,5] #홀수만 반환
lst = [1, 2, 3, 4, 5]
이 리스트에서 홀수만 추출하고 싶다면, 다음과 같이 filter() 함수와 람다 함수를 사용하여 홀수만을 추출할 수 있습니다.
new_lst = list(filter(lambda x: x % 2 == 1, lst))
print(new_lst)
위 코드는 filter() 함수와 람다 함수를 사용하여 리스트의 요소 중에서 홀수만을 추출하여 new_lst 리스트에 저장합니다.
출력 결과는 다음과 같습니다.
[1, 3, 5]
3. sorted() 함수와 함께 사용
sorted() 함수는 시퀀스(리스트, 튜플 등)의 요소를 정렬한 결과를 반환합니다. 이 때, sorted() 함수와 함께 람다 함수를 사용하여 정렬 기준을 지정할 수 있습니다.
예시) 리스트를 길이 순으로 정렬
lst = ['Amy', 'Babo', 'ChoiYujin']
new_lst = sorted(lst, key=lambda x: len(x))
print(new_lst)
위 코드는 sorted() 함수와 람다 함수를 사용하여 리스트의 요소를 길이 순으로 정렬한 결과를 new_lst 리스트에 저장합니다. 이 때, sort함수의 첫 번째 인자로 리스트가 오고, 두 번째 인자로 key가 옵니다
출력 결과는 다음과 같습니다.
['ChoiYujin', 'Babo', 'Amy']
결론
위 예제를 통해 Python에서 람다 함수가 어떻게 사용되는지에 대해 살펴보았습니다.
람다(lambda) 함수는 다음 두 가지 경우에서 자주 쓰인다는 점 기억합시다
- 한 줄짜리 함수를 정의할 때
- sorted() ,filter(),map()등 함수를 인자로 전달해야 하는 경우