lambda는 일시적으로 사용하는 함수입니다.
필요할 때 잠시 정의해두고 쓴 다음 버립니다.
#일반적인 함수
def myfunc(x,y):
return x+y
#lambda 함수
lambda x,y:x+y
몇몇 함수에서는 function을 parameter로 사용할 수 있습니다.
대표적으로 map, filter 등이 있습니다.
t1 = [1,2,3,4]
t2 = [7,2,1,3]
map 함수를 이용해 (t1+1)*(t2+2)를 구한다고 합시다. (표현방식이 이상해도 이해부탁드립니다.)
def myfunc(x,y):
return (x+1)*(y+2)
list(map(myfunc,t1,t2))
#결과
#[18, 12, 12, 25]
한 두개로는 괜찮겠지만 저런 함수가 많이 늘어난다면 코드가 더러워질 수 있습니다.
list(map(lambda x,y:(x+1)*(y+2),t1,t2))
#결과
#[18, 12, 12, 25]
lambda 함수를 사용하면 깔끔하게 처리가 가능합니다.
lambda 함수를 알게 된 계기는 알고리즘 문제를 풀게 되면서 입니다.
dictionary(이하 dict)에서 value를 기준으로 key의 값들을 정렬해야하는 경우가 있었습니다.
mydict = {'a':5,'b':2,'c':4}
#원하는 결과
#['b','c','a']
전 이걸 반복문도 쓰고 임시 list도 만들어서 해결했습니다. 공부를 안해서 그렇죠.
dict_values = sorted(mydict.values())
dict_keys = []
for i in dict_values:
for x,y in mydict.items():
if y == i:
dict_keys.append(x)
하지만 lambda를 쓰면 sorted 함수 한번으로 해결이 가능합니다.
sorted(mydict.keys(),key = lambda x : mydict[x])
하... 공부합시다 .
[python] startswith, endswith (0) | 2020.09.06 |
---|---|
[python] calendar - 달력 관련 모듈 (0) | 2020.09.03 |
[python] set에 대해 알아보기 및 예제 (0) | 2020.09.03 |
[python] enumerate 함수 사용법 및 예제 알아보기 (0) | 2020.09.03 |