[python] 파이썬 람다 표현식 (Lambda Expressions)

Ryong·2022년 12월 29일
post-thumbnail

다시 코딩테스트 공부를 시작한지 얼마 안돼서 람다 표현식에 대해 공부해보는겸 작성해본다 ㅎㅎ 나는 dict 정렬할 때 람다를 많이 썼었는데 그게 효율적인? 코드인지는 확신이 없다.

📌 람다 표현식이란?

파이썬 3.7버전 공식 문서에서 설명하고 있는 람다 표현식을 파파고를 곁들여 요약하자면 다음과 같다.

람다 키워드를 사용하여 작은 익명 함수(anonymous functions)를 만들 수 있습니다. 람다 함수는 함수 객체가 필요한 모든 곳에서 사용할 수 있습니다. 구문적으로 단일 표현식(a single expression)으로 제한됩니다. 또 다른 용도는 작은 함수를 인수로 전달하는 것입니다.

한번 더 요약하자면 이 정도일 것이다.

  1. 익명 함수(Anonymous function) 생성
  2. 단일 표현식(a single expression)으로 제한
  3. 작은 함수를 인수로 전달 -> 매개변수로 활용

📌 사용법 및 예시

익명 함수(Anonymous function) 생성

기본적으로 다음과 같이 사용할 수 있다.

lambda 매개변수: 반환값

이해가 가지 않는다면 아래 예시를 더 살펴보자.

입력한 값에 1을 더해서 출력해주는 plus_one 함수는 다음과 같다.

def plus_one(n):
	return n+1

이를 lambda를 사용해 이름없는 익명 함수를 구현하면 다음과 같다.

lambda x: x+1

plus_one이라는 이름을 가지는 함수와 익명 함수의 가장 큰 차이는 이름의 유무이다. 물론 당연한 이야기이다. 하지만 이름을 가지고 있다는 것은 이름을 통해 어디서든 호출할 수 있다는 것을 뜻한다. 이는 곧 재사용성을 의미한다. 그러므로 반복적으로 사용되는 함수라면 lambda로 구현하지 않는 것이 바람직하다.

매개변수로 활용

이제 매개변수로 활용되는 경우를 알아보자. 코딩테스트 문제를 풀다보면 람다는 대부분 매개변수로 활용할 때 쓰인다.

예를 들어 리스트의 모든 요소에 1씩 더하는 경우를 살펴보자. 우리는 map과 lambda를 사용해 다음과 같이 구현할 수 있다.

num = [1, 2, 3, 4, 5]
num = list(map(lambda x: x+1, num))

print(num)	# [2, 3, 4, 5, 6] 을 출력한다.

dict(dictionary) 정렬

맨 처음에 언급했던 dict 정렬에 대해서도 간단하게 알아보자.

num_dict = {'a': 2, 'c': 8, 'ab': 5, 'd': 1}

for item in num_dict.items():
    print(item)

예시로 num_dict 를 만들었다. print 결과는 다음과 같다.

각 item에서 첫번째 요소는 key, 두번째 요소가 value이므로 이를 활용해 key, value를 기준으로 정렬할 수 있다.

key 기준 정렬

item[0] 이 key를 의미한다.

sorted_dict = sorted(num_dict.items(), key=lambda item: item[0])
print(sorted_dict)

print 결과는 다음과 같다.

value 기준 정렬

item[1] 이 value를 의미한다.

sorted_dict = sorted(num_dict.items(), key=lambda item: item[1])
print(sorted_dict)

print 결과는 다음과 같다.

profile
글을 작성하는 연습 중인 백엔드 개발자

0개의 댓글