본문 바로가기
python

Python - 람다표현식 이해와 예제 ( Understanding Lambda expression )

by 맑은안개 2021. 1. 19.

람다표현식 ( Lambda expression )

  람다함수는 "익명(Annoymous)함수"라고 표현합니다. 말그대로 이름이 없는 함수를 뜻합니다. 간결하고 직관적인 코드로 가독성이 좋아집니다. 

  특히 map, reduce, filter 함수와 함께 많이 사용됩니다. 함수를 정의하지 않고 익명함수로 대체 하여 간결한 코드를 작성할 수 있습니다.  lambda 키워드를 사용하여 람다함수를 사용합니다. 

 

lambda 이해

>>> fruits = ['banana', 'apple', 'melon']

위 과일 리스트를 모두 대문자로 치환하는 로직을 구현해봅니다.

 

1. for 를 이용한 방식

>>> result = [x.upper() for x in fruits]
>>> result
['BANANA', 'APPLE', 'MELON']

함수를 통해 로직처리를 하는경우 map을 사용합니다.

 

2. map을 이용한 방식

>>> def upper_str(x):
	return x.upper()
    
>>> result = list(map(upper_str, fruits))
>>> result
['BANANA', 'APPLE', 'MELON']    

간결한 처리를 위해 함수를 정의치 않고 익명함수를 사용하여 처리할 수 있습니다.

 

3. lambda를 이용한 방식 ( map, filter, reduce )

map

>>> result = list(map(lambda x: x.upper(), fruits))
>>> result
['BANANA', 'APPLE', 'MELON']

익명함수로 upper_str 함수를 대체하여 사용하여 더 간결해졌다.

 

filter

number_list = [5, 2, 9, 10, 3, 7, 6]

>>> result = list(filter(lambda x: (x % 2 == 0), number_list))
>>> result
[2, 10, 6]

reduce - 1부터 10까지 더한 값.

>>> reduce(lambda x, y: x+y, range(1, 11))
55

lambda에 삼항연산 조건식 적용

과일이름, 가격을 갖는 2차원 배열에서 과일 가격이 3000원 이상인 과일을 20% 할인 가격으로 map을 적용해본다.

>>> fruits = [ ['banana', 1000], ['apple', 1100], ['melon', 5000] ]

>>> result = list(map(lambda x: x if x[1] > 0 and x[1] < 3000 else ([x[0], x[1] * (1 - 0.2)]), fruits))
>>> result
[['banana', 1000], ['apple', 1100], ['melon', 4000.0]]

객체화 하여 사용

>>> _sum = lambda x, y: x + y
>>> _sum(125, 50)
175

람다표현식 다이렉트 호출

>>> (lambda x, y: x + y)(125, 50)
175

 

반응형