ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python_lambda
    Programming/_Python 2023. 6. 22. 17:20

    1. lambda

     lambda는 def와 같이 함수를 생성할 때 사용되는 예약어로 함수를 한 줄로 간결하게 만들때 사용된다.

    기존 def로 만든 함수와 비교해보면 다음과 같다.

    # def로 만든 함수
    def test_add(a: int, b: int) -> int:
        return a+b
    
    # lambda로 만든 함수
    lambda_add1 = lambda a, b : a+b
    
    # 혹은 이렇게
    lambda_add2 = (lambda a, b: a+b)(4, 5)
    
    print(test_add(4, 5))
    print(lambda_add1(4, 5))
    print(lambda_add2)

    또는 다음과 같이 조건문을 적용할 수 있다.

    def if_else(number: int) -> bool:
        if number >= 10:
            return True
        else:
            return False
    
    print(if_else(5)) # False
    
    # lambda
    result_lambda: bool = (lambda number : True if number >= 10 else False)(15)
    print(result_lambda) # True

     

    2. lambda와 함께 사용되는 함수들

    - map()

     map은 각 요소들에게 특정한 함수를 적용시킬 때 쓰는 함수이다. 주로 list와 tuple과 함께 사용이 되며 다음과 같은 구조를 갖는다.

    • map(function, list), map(function, list): python2
    • list(map(function, list)), tuple(map(function, tuple)): python2, python3

    위의 첫번째 예시를 Python3에서 사용하면 map object를 반환한다.

    예시는 다음과 같다.

    import sys
    
    my_input = sys.stdin.readline().split() # 입력: 1 2 3 4 5
    print(my_input) # str type의 요소를 갖는 list를 얻음
    
    my_input = list(map(int, my_input)) # int type의 요소를 갖는 list로 변경
    print(my_input)

    이를 lambda와 함께 사용할 수 있는데 응용한 예시는 다음과 같다.

    result: list = list(map(lambda a : a*2, range(3)))
    
    print(result) # [0, 2, 4]

    - filter()

    filter는 아래와 같은 구조를 가지며, 주어진 함수에 대해 True 값을 반환해주는 역할을 한다.

    • filter(function, list), filter(function, list): python2
    • list(filter(function, list)), tuple(filter(function, tuple)): python2, python3

    위의 첫번째 예시를 Python3에서 사용하면 filter object를 반환한다.

    예시는 다음과 같다.

    test_filter = list(filter(lambda x : x < 3, range(5)))
    print(test_filter) # [0, 1, 2]

    이처럼 람다식이 어떠한 조건을 갖는지에 따라 여러가지를 활용할 수 있다.


    - reduce()

     reduce는 아래와 같은 구조를 가지며 주어진 원소들을 누적하여 반환합니다. reduce를 사용하기 위해서는 모듈을 사용해야 한다.

    • reduce(function, list), reduce(function, list)
    from functools import reduce
    
    ## 1번 예제
    my_list = [1,2,3,4,5]
    test_reduce = reduce(lambda x, y : x + y, my_list)
    print(test_reduce) # 15
    
    ## 2번 예제
    my_list = range(6)
    test_reduce = reduce(lambda x, y : x+y, my_list)
    print(test_reduce) # 15

     

     

     

    'Programming > _Python' 카테고리의 다른 글

    Python_function  (0) 2023.06.21
    Python_upper_lower  (0) 2023.06.15
    Python?  (0) 2023.06.15
Designed by Tistory.