[Python] Python lambda
lambda 함수
lambda라는 예약어는 함수를 생성할 때 사용하면 def와 동일한 역할을 한다. 함수를 한 줄로 간결하게 표현할 수 있고, return 명령어를 사용하지 않아도 결과값을 반환하는 특징이 있다.
기본적인 구조 :
lambda parameter1, parameter2,... : 파라미터를 사용한 표현식
lambda 예약어 뒤에 파라미터를 입력하고 콜론(:)을 사용, 그 뒤에 함수에서 동작할 표현식을 입력해주면 된다.
#덧셈기능 함수
#def 함수
def add(a,b) :
return a+b
result = add(3,4)
print(result)
#lambda 함수
add = lambda a,b : a+b
result = (3,4)
print(result)
위에서 def를 사용하여 정의한 함수와 lambda를 사용하여 정의한 함수는 하는 일이 동일하다.
lambda와 map 함수
map() 함수는 리스트나 튜플에 어떠한 처리를 할 때 사용하는 함수이다.
map(function, list or tuple)
첫 번째 파라미터인 함수는 두 번째 파라미터로 전달된 리스트나 튜플에 어떠한 처리를 하게 된다.
#def 함수 사용
def add_two(x):
return x + 2
result1 = list(map(add_two, [1,2,3,4,5]))
print(result1)
#lambda 함수 사용
result2 = list(map((lambda x : x+2),[1,2,3,4,5]))
print(result2)
result1의 결과는 [3,4,5,6,7]
result2의 결과 또한 [3,4,5,6,7]이 된다.
“리스트(또는 튜플)를 처리하는 것은 이번 한번 뿐이다.” 라는 상황에서 map() 함수를 사용할 경우, 함수의 작동 표현식이 복잡하지 않다면 lambda를 사용하는 것이 더 적절할 수도 있을 듯 하다.
lambda와 filter 함수
filter함수는 map함수와 마찬가지로 첫 번째 파라미터로 함수를, 두 번째 파라미터로 리스트나 튜플을 전달받게 된다.
filter 말 그대로 리스트나 튜플의 요소들을 하나하나씩 정의한 함수에 넣어 필터링을 하게 된다.
filter(function, list or tuple)
0부터 9까지의 리스트에서 짝수들만 필터링하여 새로운 리스트를 만드는 예시이다.
#def 함수 사용
def even(x):
return x%2 == 0
result1 = list(filter(even, range(10)))
print(result1)
#lambda 함수 사용
result2 = list(fliter((lambda even x : x%2 == 0), range(10)))
print(result2)
result1의 결과는 [0, 2, 4, 6, 8]
result2의 결과 또한 [0, 2, 4, 6, 8] 이다.
위의 결과에서 알 수 있듯이, filter 함수의 첫 번째 파라미터(함수)를 통해 나온 결과가 True인 경우의 값만 가져와서 리스트를 만들게 된다.