[Python] lambda 함수

hugingstar·2022년 4월 19일
0
post-thumbnail

1.Lambda 함수

오늘은 프로젝트 개발을 하다가 Lambda 함수를 어떻게하면 제대로 쓸 수 있을까 고민을 하게 되었다. 일단 보통 클래스를 만들 때는 클래스 하위에 def를 여러개 만들어서 하지만, 때에 따라서는 한 줄만 사용할 건데 그렇게 귀찮게 최소 2~3줄 이상되는 함수를 만들어야 되는 고민에 빠지곤 한다. 이러한 문제를 해결해 줄 수 있는 것이 바로 Lambda 함수였다. 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

2.lambda 응용

나의 경우에는 토큰 셋(tkSet)을 정렬하는 문제였다. soted() 함수에서도 key=lambda 함수를 사용해서 정렬을 한다.

  • tkSet : 토큰 셋 (타입 : dictionary)
  • tkSet.items() : 튜플의 [0]값은 key, [1]번 자리 값은 value
  • lambda x: x[1].frequency의 의미 : 리스트 안에 있는 튜플의 [1]번 자리 값의 frequency를 값을 불러낸다.
  • reverse=True의 의미 : 내림차순으로 정렬한다.
  • tmp의 타입은 리스트
tkSet.items()의 출력 값
[('BLDG', name: BLDG, children: [], parents: [], frequency: 7),...]

tmp = sorted(tkSet.items(), key=lambda x: x[1].frequency, reverse=True)

0개의 댓글