오늘은 프로젝트 개발을 하다가 Lambda 함수를 어떻게하면 제대로 쓸 수 있을까 고민을 하게 되었다. 일단 보통 클래스를 만들 때는 클래스 하위에 def를 여러개 만들어서 하지만, 때에 따라서는 한 줄만 사용할 건데 그렇게 귀찮게 최소 2~3줄 이상되는 함수를 만들어야 되는 고민에 빠지곤 한다. 이러한 문제를 해결해 줄 수 있는 것이 바로 Lambda 함수였다. Lambda 함수는 무엇일까?
Lambda 함수를 쓰지 않았을 경우에는 아래 처럼 def를 선언해주어야 한다.
def add(a,b):
return a + b
add(1, 2)
결과 값 : 3
하지만, Lambda 함수를 써서 한다면 이야기는 달라진다. 1줄 안에도 표현이 가능하다. Lambda 함수를 선언할 때 양식은 (lambda 매개변수, 매개변수... : 계산할 수식)(입력값)'
으로 표현하면 된다. 예시를 보면 아래와 같다. 세상 간단한 것이었다.
(lambda a, b : a + b)(1, 2)
결과 값 : 3
나의 경우에는 토큰 셋(tkSet)을 정렬하는 문제였다. soted() 함수에서도 key=lambda 함수
를 사용해서 정렬을 한다.
lambda x: x[1].frequency
의 의미 : 리스트 안에 있는 튜플의 [1]번 자리 값의 frequency를 값을 불러낸다.reverse=True
의 의미 : 내림차순으로 정렬한다.tkSet.items()의 출력 값
[('BLDG', name: BLDG, children: [], parents: [], frequency: 7),...]
tmp = sorted(tkSet.items(), key=lambda x: x[1].frequency, reverse=True)