본문 바로가기
파이썬(Python)/문법 내용정리

Lambda Function (람다 함수)

by HealingMusic 2021. 1. 24.

람다 함수는 익명 함수를 말합니다. 익명 함수를 사용하는 이유는, 함수의 기능이 간단한 경우에 해당 함수를 간결한 코드만으로 사용하기 위함이며, 특히 함수에서 인자로 함수를 요구할 때 많이 사용됩니다.

 

먼저 기본적인 형태를 살펴보겠습니다.

int_ex = 10
f = lambda x : x * 2
# lambda 입력 : 출력 의 형태. x를 입력받으면, x * 2를 리턴한다.
print(f(int_ex)) # 20

람다 함수는 위와 같이 lambda 입력 : 출력 의 형태로 작성하며, 함수의 이름을 따로 설정하지 않아도 된다는 특징이 있습니다.

(위 코드의 f = lambda 부분의 f는 함수의 이름이 아니라, 람다 함수를 변수명을 통해 넘긴 것일 뿐입니다)

 

이번에는 람다 함수가 유용하게 사용되는 경우를 살펴보겠습니다. 아래의 두 코드는 리스트의 모든 원소에 2를 곱하는 코드입니다.

list_ex = [1,2,3,4,5,6,7,8,9,10]

# 1
index = 0
for elem in list_ex:
	elem *= 2
    list_ex[index] = elem
    index += 1
    
# 2
list_ex = list(map(lambda x : x * 2, list_ex))
# map 함수는 iterable의 각 원소에 함수를 적용한 후, map 객체로 리턴한다.
# 따라서 list 함수를 이용해 list로 cast 하였다.

map 함수의 인자로 람다 함수를 사용함으로써 코드가 훨씬 간단해졌습니다.

 

람다 함수는 간단한 함수의 구현에만 사용하는 것이 권장되지만, 기본적인 if - else 구문 정도까지는 사용이 가능합니다.

(단, elif 구문은 지원하지 않으며, if else 키워드로 해당 구문을 대체할 수 있습니다)

아래는 람다 함수를 이용하여 리스트의 원소가 짝수인 경우에는 2로 나누고, 홀수인 경우에는 1을 더하는 코드입니다.

list_ex = [1,2,3,4,5,6,7,8,9]
list_ex = list(map(lambda x : x / 2 if x % 2 == 0 else x + 1 if x % 2 == 1 else None, list_ex))
# x / 2 리턴 -> x % 2 == 0일 때, 아니면 x + 1 리턴 -> x % 2 == 1일 때, 아니면 None 리턴

위와 같이 lambda 함수에서는 elif 구문을 사용할 수 없으며, 반드시 else ~ 로 끝나야만 합니다. 따라서 x를 2로 나누었을 때의 나머지는 무조건 0 또는 1이지만, else ~ 로 끝나야 한다는 규칙에 의해 else None을 추가하였습니다.

'파이썬(Python) > 문법 내용정리' 카테고리의 다른 글

F-string (가장 강력한 print 방법)  (0) 2021.01.28
Enumerate 함수  (0) 2021.01.27
Comprehension (List, Set, Dict)  (0) 2021.01.24
Sorted 함수  (0) 2021.01.23
# 00. 카테고리 소개  (0) 2021.01.23

댓글