본문으로 바로가기

파이썬 람다 표현식 사용하기 lambda

category Language/Python 2020. 7. 10. 10:45
728x90

lambda expression 이란?

간편하게 익명함수를 만드는 문법입니다.

 

예제

plus_one 함수는 기본형태이고, 이와 동일한 기능을 하는 plus_one2 함수는 람다 표현식으로 나타냈습니다.

plus_one2 의 함수명은 <lambda> 로 나타나는 것을 볼 수 있습니다.

def plus_one(x):
    return x + 1
    
plus_one2 = lambda x: x + 1

print(plus_one.__name__)
print(plus_one(5))

print(plus_one2.__name__)
print(plus_one2(10))
더보기
plus_one
6
<lambda>
11

 

바로 호출을 하고 싶을 경우는 다음과 같이 사용하면 됩니다.

>>> (lambda x: x + 1)(10)
11

 

람다 표현식의 사용

람다 표현식은 map() 함수에 자주 사용합니다.

컴프리헨션 표현식과 비교. 

array = [99, 77, 55, 33, 11]

y = 10
m = map(lambda x: x - y, array)

c = [x - y for x in array] # comprehension

print(list(m))
print(c)
더보기
[89, 67, 45, 23, 1]
[89, 67, 45, 23, 1]

 

매개변수가 없는 함수는 다음과 같이.

>>> t = lambda : True
>>> f = lambda : False
>>> zero = lambda : 0
>>> t()
True
>>> f()
False
>>> zero()
0

 

주의사항

lambda x, y: x + y

 

람다 표현식에 대입연산은 할 수 없습니다.

>>> lambda x, y: z = x + y
  File "<stdin>", line 1
SyntaxError: can't assign to lambda

 

다음 에러의 문장과 똑같은 표현.

>>> def func2(x, y):
...   return z = x + y
  File "<stdin>", line 2
    return z = x + y
             ^
SyntaxError: invalid syntax