오리는 오늘도 꽥꽥

[python] lambda

2020. 9. 3. 03:59

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])

 

하... 공부합시다 .

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band