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인 경우의 값만 가져와서 리스트를 만들게 된다.