안녕하세요 독학코딩입니다. 오늘은 파이썬의 람다 표현식에 대해서 배워보겠습니다. 처음 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
이렇게 따로 변수로서 사용하지는 않습니다. 모든 사용방법을 설명드릴 순 없지만, 그래도 알고 계시면 나중에 다른 사람 코드에서 보거나 직접 사용할 일들이 생길겁니다.
'Python > Python 중급' 카테고리의 다른 글
Python 파이썬 Loop, 루프 테크닉 (0) | 2022.03.16 |
---|---|
Python 파이썬 List, list(), 리스트 활용 중급 (0) | 2022.02.28 |
Python 파이썬 함수 지역변수, 전역변수 (0) | 2022.01.13 |
Python 파이썬 함수 기본값, 키워드 값, 가변인자 (0) | 2022.01.12 |
Python 파이썬 함수 선언, 호출, 전달값, 반환값 (0) | 2022.01.11 |
댓글