본문 바로가기
파이썬(Python)

[Python]lambda함수

by KwonSoonBin 2022. 12. 30.

람다함수(익명함수)

파이썬에서는 람다함수를 통해 이름이 없는 함수를 만들 수 있다.

람다함수의 장점은 코드의 간결함 메모리의 절약이라고 할 수 있다.

lambda 매개변수 : 표현식

 

두 수를 더하는 함수)

>>> def hap(x, y):
...   return x + y
...
>>> hap(10, 20)
30

위와 같은 함수를 람다 함수로 표현하면 아래와 같이 간결하게 작성할 수 있다.

>>> (lambda x,y: x + y)(10, 20)
30

람다함수는 결과부분된 부분을 return키워드 없이 자동으로 return해 준다.

익명함수라는 이름처럼 lambda함수는 함수의 이름을 지정하지 않는다.

>>> lambda x : x + 1

위와 같은 람다함수는 인자로 받은 숫자에 +1을 해주는 함수입니다. 람다 함수는 정의와 동시에 사용할 수 있다.

>>> (lambda x : x+1)(3)
4

하지만 함수에 이름이 없고, 저장된 변수가 없기 때문에 다시 사용할 수는 없다.

물론 람다함수도 객체이기 때문에 정의와 동시에 변수에 담을 수는 있다.

>>> func = lambda x : x + 1
>>> func(4)
5

 

람다함수 사용 예

sorted함수의 경우 key위치인자에 함수를 보내서, 함수에서 지장한 결과값에 따라서 정렬을 할 수 있습니다.

다음과 같은 문자를 정렬할때

target = ['  cat ', ' tiger ', '    dog', 'snake   ']

알파벳 순서가 아니라, 앞뒤 불필요한 공백을 제외한 문자의 길이로 정렬을 하고 싶다면,

정렬의 기준으로 사용할 값을 리턴하는 함수를 생성하여, sorted함수에 넘겨줘야 한다.

def my_key(string):
     return len(string.strip())
target = ['  cat ', ' tiger ', '    dog', 'snake   ']
print(sorted(target, key=my_key))

하지만 my_key라는 함수는 이번 정렬만을 위한 함수입니다. 재사용할 이유가 없다면 lambda 함수를 생성하여 넘겨주는 편이 낫다.

target = ['cat', 'tiger', 'dog', 'snake']
print(sorted(target, key=lambda x : len(x.strip())))
 

 

 

 

https://wikidocs.net/64

댓글