[Python] 람다 표현식 사용하기

    지금까지 def 함수를 정의해서 사용했지만, 람다 표현식으로 익명 함수를 만들 수가 있다.

     

     

    기존 def 코드

    def plus_ten(x):
    	return x + 10
        
    plus_ten(1)

     

    람다식 코드

    plus_ten = lambda x : x+ 10
    
    
    print(plus_ten(1))

    람다식은 이처럼 한 줄 코딩에 도움이 된다.

     

     

     

    람다식은 자체를 호출 할 수 있는 기능이 있다.

    print((lambda x : x +10)(1))
    

     

    람다식 식을 세우는 것과 자기 자신을 부르는 방법이다.

     

     

     

     

    람다 표현식의 주의사항

    람다 표현식 안에서는 새 변수를 만들 수가 없다.

    반환값 부분은 변수 없이 식 한줄로 표현 할 수 있어야 한다.

    변수가 필요한 코드일 경우에는 def로 함수를 작성하는 것이 좋다.

     

     

    y = 10
    (lambda x : x+y)(1)

    >>>11

     

     

    이 람다식을 보았을 때 변수 선언은 바깥에 해줘도 사용 할 수 있는 모습을 볼 수 있다.

    한 마디로, 람다식은 변수의 사용이 의외로 자유롭다는 점이다.

     

     

    람다 표현식을 인수로 사용하기

    list(map(lambda x : x + 10, [1, 2, 3]))

    리스트의 값을 map을 이용해서 모두 집어 넣을 수가 있다.

    람다 표현식을 사용하는 이유는 함수의 인수 부분에서 간단하게 함수를 만들기 위해서다.

     

     

     

    람다 표현식에 조건부 표현식 사용하기

    a = [1, 2, 3, 4, 5, 6, 7, 8 ,9, 10]
    b = list(map(lambda x : x if x % 3 != 0 else x*2, a))

    >>>[1, 2, 6, 4, 5, 12, 7, 8, 18, 10]

     


    a의 리스트 값을 앞에서 배운 if와 else를 통해서 결과값을 바꿀 수가 있다.

     

     

     

    amp에 객체를 여러개 넣기

    a = [1, 2, 3, 4, 5]
    b = [2, 4, 6, 8, 10]
    
    list(map(lambda x, y : x * y, a, b))

    >>>[2, 8, 18, 32, 50]

     

     

    리스트 2개를 처리할 때 람다 표현식에서 lambda x, y : x * y처럼 매개변수를 두개로 지정하면 된다.

     

     

     

     

    filter 사용하기

     

    filter(함수, 반복 가능한 객체) 방식으로 사용한다.

     

     

    def f(x):
    	return x > 5 and x < 10
        
        
        
    a = [8, 3, 2, 10, 15, 7, 1, 9, 0, 11]
    list(filter(f, a))

    >>>[8, 7, 9]

     

     

    람다식으로 표현

    a = [8, 3, 2, 10, 15, 7, 1, 9, 0, 11]
    list(filter(lambda x : x >5 and x <10, a))

     

    반응형

    댓글

    Designed by JB FACTORY