Amada Coding Club

[Python] lambda 에 대해 알아보자 본문

코딩테스트-Python/문법

[Python] lambda 에 대해 알아보자

아마다회장 2023. 1. 5. 16:47

코테 준비를 하면서 다른 사람들의 잘 짠 코드들을 보면 lambda함수를 사용하는 걸 볼 수 있다. 

학부 프로그래밍 언어론 강의 때 람다에 대한 내용을 다뤘었는데 기억나는 부분은 람다표현식을 사용하면 여러 줄의 코드를 짧은 줄로 획기적으로 줄일 수 있다는 부분이었다. 이때는 단순히 그런가보다 했었는데 생각보다 코테에서(실제 개발환경에서는 사용해본 적이 없어서 잘 모르겠다) 람다표현식이 많이 사용되어 정리를 해보려고 한다.


Lambda expression

람다 표현식의 구체적인 설명은 생략하고 람다의 형태는 다음과 같다.

lambda 매개변수 : 표현식

#위 식은 아래와 같음

def function (매개변수):
	표현식

이와 같이 아래 함수를 람다 표현식을 통해 간단하게 표현할 수 있다.

map 함수를 이용해보자.

우선 map()에 대해 모르고 있을지도 모르기 때문에 map에 대해 간단하게 설명해보면 

map(함수, 리스트)

이런 구조로 이루어져 있어 리스트에서 요소를 하나하나씩 꺼내 함수를 적용시키고 묶어서 map 객체로 반환하는 함수다.

만약에 1부터 10까지 있는 리스트 요소들을 5씩 곱하고 싶다면 람다를 이용해 다음과 같이 표현할 수 있다

ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(map(lambda x: x*5, ls)))

# ---------------------------------------------------------#

def func(n):
    return n * 5
    
print(list(map(func, ls)))

 다른 함수를 선언해야하는 번거로움 없이 map 안에서 원하는 식을 넣을 수 있다

 

다른 예시로 sort함수를 보자 sort는 2차원 리스트나 문자열로 이루어진 리스트에서 정렬 기준 인덱스를 key를 통해 설정할 수 있다. 람다를 이용해 2차원 리스트의 2번째 인덱스를 비교하는 것을 구현해보자

ls = [[1, 9], [2, 8], [3, 7], [4, 6], [5, 5], [6, 4], [7, 3], [8, 2], [9, 1]]

ls.sort()
print(ls)
## 출력 : [[1, 9], [2, 8], [3, 7], [4, 6], [5, 5], [6, 4], [7, 3], [8, 2], [9, 1]]
ls.sort(key=lambda x: x[1])
print(ls)
## 출력 : [[9, 1], [8, 2], [7, 3], [6, 4], [5, 5], [4, 6], [3, 7], [2, 8], [1, 9]]

#람다를 사용하지 않았을 때
def keySort(nList):
    return nList[1]
ls.sort(key=keySort)
print(ls)
# 출력: [[9, 1], [8, 2], [7, 3], [6, 4], [5, 5], [4, 6], [3, 7], [2, 8], [1, 9]]

이렇게 2차원 배열에서 lambda를 이용해서 3줄짜리 코드를 한 줄로 줄일 수 있다. 

 

이처럼 람다는 많은 곳에서 간단하게 함수를 표현하고 싶을 때 사용된다. 

나도 이제 람다 좀 많이 써봐야겠다. 

 

<이 게시글은 아래 사이트를 참고하였음>

 

3.5 람다(lambda)

오늘은 람다 형식과 그것을 이용하는 여러 가지 함수들에 대해서 알아보겠습니다. 당장 완벽하게 소화하실 필요는 없을 것 같구요, 가벼운 마음으로 이런 것이 있다는 정도만 아셔도 되…

wikidocs.net