Python 파이썬 lambda, 람다 표현식 기초
안녕하세요 독학코딩입니다. 오늘은 파이썬의 람다 표현식에 대해서 배워보겠습니다. 처음 lambda 라는 단어를 봤을때 ??? 이런 생각이 가장 먼저 들었던것 같습니다. 코드를 살펴보아도 직관적으로 이해하기 힘들점이 한 몫 했던것 같습니다.
람다 표현식은 간단한 함수를 더 간단하게 한줄로 표현하기 위한 방식이라고 생각하시면 좋습니다. if문, for문 한줄 표현식과 합쳐지면 강력한 도구가 되는 정말 유용한 기술입니다. if문, for문 한줄 표현식에 대해서 잘 모르신다면 아래 링크 참고하시면 도움이 되실겁니다.
Python lambda 기초
def addtion(x):
return 10 + x
my_func1 = addtion(12)
print(my_func1)
my_func2 = lambda x : 10 + x
print(my_func2(12))
람다 표현식이라는건 위와 같은 것입니다. 람다 표현식을 쓰지 않으면 4줄이 필요한 코드를 람다를 통해 2줄로 줄일 수 있는 것입니다. 이게 별거냐 생각할 수도 있지만, 수만 수십만 줄의 코드를 작성하다보면 엄청난 차이를 가져오게 됩니다.
Python lambda 내 변수
print((lambda x : 10 + x)(12))
print((lambda x : y + x)(12))
람다 표현식은 기본적으로 1개의 변수 x만 전달값으로 받습니다. (물론 x는 본인이 쓰기 나름입니다.) 하지만 y를 람다 외부에 선언해 놓으면 충분히 사용 가능합니다.
y = 10
print((lambda x : y + x)(12))
보통은 위의 예제가 여러 변수를 쓰는 유일한 방법이라고 생각하는데 그렇지는 않습니다. 람다도 변수를 여러개 선언하면 여러개의 변수를 사용할 수 있습니다.
my_func2 = lambda x, y : x + y
print(my_func2(12, 12))
위와 같이 :
앞에 여러개의 변수를 선언하면 람다도 여러개의 변수를 사용할 수 있습니다.
Python lambda 와 if문 활용
def check_data(x):
if x <= 19 :
return False
else :
return True
print(check_data(19))
lambda_check_data = lambda x : False if x <= 19 else True
print(lambda_check_data(22))
Python lambda 와 for문 활용
파이썬 람다와 for문의 활용은 정확히 for문을 사용한다고 말하기는 어렵습지만, 같은 기능을 구현하는 map()
함수를 사용합니다.
listA = []
for x in range(5):
listA.append(x + 10)
print(listA)
listA = list(map(lambda x: x + 10, range(5)))
print(listA)
map()
함수는 map(함수, 리스트)
로 사용하며, 리스트의 인자를 함수에 전달값으로 사용하여 mapping 한다고 생각하시면 됩니다.
위 포스트를 쭉 다 읽어보셨다면, 굳이 파이썬에서 람다 표현식을 쓰는 이유에 대해서 납득이 안되실겁니다. 아마 예제가 간단하게만 만들어서 그럴 것 같습니다. 실무에선 람다는 보통 함수 안에서 사용합니다. 위의 예제처럼 my_func2 = lambda x : 10 + x
이렇게 따로 변수로서 사용하지는 않습니다. 모든 사용방법을 설명드릴 순 없지만, 그래도 알고 계시면 나중에 다른 사람 코드에서 보거나 직접 사용할 일들이 생길겁니다.