Python에서의 Lambda는 한시적으로 사용하는 함수의 정의를 의미합니다. 즉 일반적 함수로 def 선언을 해주는 것이 아니라 필요한 곳에서 사용하고 즉시 폐기되는 함수입니다.
Lambda는 명료하며 ML에서 자주 사용을 하게 되는데 무엇보다 매우 빠른 연산 처리에 능합니다. 하기 형식으로 표현이 됩니다. 잘 이용하면 Python의 Loop, for를 대체하며 속도를 높일 수 있습니다.
Lambda 인자리스트 : 표현식 |
아래의 형식을 확인하면 간단하게 이해할 수 있습니다. 람다 정의에서는 "return"문이 포함되어 있지 않습니다.
g = lambda x:x**2
print(g(8))
f = lambda x,y:x+y
print(f(2,2))
만약 "return"문과 유사하게 반환 값을 만드는 표현식을 원하면 def(함수) 안에 넣어 이용하면 됩니다.
def inc(n):
return lambda x: x + n
f = inc(2)
g = inc(4)
print(f(12))
print(g(12))
print(inc(2)(12))
보통 lambda는 map(), filter(), reduce()와 함께 이용되며 ML에서 강력하게 사용될 수 있는 조합이 됩니다.
map(lambda function, iterable, iterable,....) 이런식으로 사용이 되며 iterable는 list, str, tuple과 같은 객체입니다.
a = [1,2,3,4]
b = [17,12,11,10]
print(list(map(lambda x, y:x+y, a,b)))
filter()는 map()과 유사하게 filter(lambda function, iterable, iterable,....)와 같이 사용이 되며 각각의 요소에 대해 Boolean 값을 반환합니다. True를 반환하면 그 요소는 남게 되고, False를 반환하면 그 요소는 제거됩니다.
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(list(filter(lambda x: x%3==0, foo)))
reduce()는 요소를 처음부터 순차적으로 순회하여 지정된 함수로 처리합니다.
from functools import reduce
t = [47, 11, 42, 13]
result = reduce(lambda x, y : x + y, t)
print(result)
Lambda응용
한번 따라 해 보세요. 바로 이해할 수 있습니다.
a = [1, 6, 2, 5, 2, 7, 2, 8, 9, 11, 5, 26]
result = list(map(lambda x : x**2, a)) # 제곱시키기
print(result)
result2 = list(map(lambda x : str(x) if x % 2 == 0 else x, a)) # 짝수인 것은 string 타입으로 cast 아니면 단순히 반환
print(result2)
b = [12, 16, 24, 5, 20, 27, 12, 8, 9, 110, 51, 26]
result3 = list(map(lambda x, y : x + y, a, b)) # 리스트 자료형 두 개 받아서 연산
print(result3)
a = [8, 4, 2, 5, 2,7, 9, 11, 26, 13]
result = list(filter(lambda x : x > 7 and x < 15, a))
print(result)
Python Loop안에 있는 Lambda 식
def square(x):
return lambda : x*x
listOfLambdas = [square(i) for i in [1,2,3,4,5]]
for f in listOfLambdas:
print(f())
listOfLambdas = [lambda i=i: i*i for i in range(1, 6)]
for f in listOfLambdas:
print(f())
텍스트의 응용
full_name = lambda first, last: f'Full name: {first.title()} {last.title()}'
>>> full_name('guido', 'van rossum')
'Python' 카테고리의 다른 글
Python으로 코호트 분석(Cohort Analysis)하고 Pandas 명령어 시행 (0) | 2021.05.07 |
---|---|
입문자 위한 Python 기본 안내서 [2] : 제어문에 대해 (0) | 2021.04.27 |
입문자 위한 Python 기본 안내서 [1] : 자료형에 대해 (0) | 2021.04.27 |
[실습] 매일 경제 기사 Python 크롤링 후 Dataframe에 넣은 후 CSV에 저장하기 (0) | 2021.04.26 |
Top Python Libraries for Data Science, Data Visualization & Machine Learning (0) | 2020.11.16 |
[TIP] Jupyter에서 다른 폴더의 library, import 호출하기 (0) | 2020.11.16 |
Pycharm과 Jupyter Notebook 연결하기 (0) | 2020.11.07 |
[Python] 반복문의 사용 Range, Enumerate, for in loop (0) | 2020.10.10 |