본문 바로가기
파이썬 팁

파이썬 lambda 함수 활용 팁

by 다빈치코딩 2023. 9. 14.

목차

    반응형

    lamda 함수란?

    파이썬의 lambda(람다)함수는 활용성이 많아 많이 사용합니다. 하지만 이제 막 배운 입장에서는 도대체 이것을 어떻게 활용할 지 몰라서 사용이 꺼려지는 것이 사실입니다. 

    람다 함수에 대해서 잘 모른다면 아래 링크를 통해 확인 부탁 드립니다.

    https://wikidocs.net/197106

     

    01. lambda 함수

    # key 만들기 우리는 max 함수에 어떤 값을 비교해서 뽑아야 하는지 알려줘야 합니다. max 함수에 key라는 매개변수를 사용하면 max 함수에게 어떤 기준의 최댓값을 선…

    wikidocs.net

    lambda 함수의 활용

    lamda 함수를 가장 많이 활용하는 몇가지 방법을 뽑아 보았습니다. 개인적인 생각이니 다른 유용한 사용법이 있으면 댓글로 소개 부탁 드립니다.

    1. 2차 리스트 정렬

    아마 lambda 함수를 가장 많이 사용하는 것이 2차 리스트를 정렬할 때 기준을 변경하기 위해 많이 사용합니다. 

    arr = [[0, 3], [1, 2], [2, 5], [3, 4], [4, 1]]
    arr.sort(key= lambda x : x[1])
    print(arr) 
    # [[4, 1], [1, 2], [0, 3], [3, 4], [2, 5]]

    정렬할 때 key 값으로 lambda x : x[1] 을 넣었습니다. x는 리스트의 요소를 뜻합니다. x[1]를 뽑아서 정렬할 키값이라고 하였으니 1번째 항목들을 기준으로 정렬되는 것을 알 수 있습니다. sort 뿐만 아니라 min, max등에서도 lambda를 사용할 수 있습니다.

    print(max(arr, key=lambda x : x[1]))
    # [2, 5]

    앞서 사용한 arr에서 max값을 가져오는 것입니다. 이 때 기존 0번째 항목을 기준으로 하는 것이 아니라, key값을 통해 1번째 항목을 기준으로 max를 뽑기 때문에 [2, 5]가 선택 됩니다.

    2. filter 사용

    다음으로 많이 사용되는 것이 filter를 사용할 때 입니다. 어떤 리스트에서 필터를 적용하여 특정 숫자들만 뽑으려 할 때 lambda를 사용하면 쉽게 꺼낼 수 있습니다.

    arr = [3, 1, 2, 7, 6, 9, 5, 4]
    print(*filter(lambda x : x % 2, arr))
    # 3 1 7 9 5

    arr에 filter를 적용하여 filter로 걸러진 값만 꺼냅니다. x % 2가 True가 되는 값만 남습니다. True가 된다는 것은 1이 된다는 것이고, 결국 홀수들만 남게 됩니다.

    3. 간단한 함수 만들기

    제가 가장 많이 쓰는 lambda의 활용 방법 입니다. 이 방법을 소개하기 위해 이 글을 쓰게된 것인지도 모릅니다. 파이썬에 여러개의 입력을 숫자로 받을 때 map을 사용하여 입력을 받습니다.

    arr = list(map(int, input().split()))

    이렇게 한 줄만 입력 받으면 상관 없지만 여러줄이 되면 이것을 쓰기 귀찮아집니다. 그래서 함수로 만들어 사용하기도 하는데 lambda 함수를 사용하면 쉽게 만들 수 있습니다.

    mii = lambda : list(map(int, input().split()))
    arr1 = mii()
    arr2 = mii()

    mii는 Map, Int, Input의 앞글자만 빼서 붙여준 함수명 입니다. 이렇게 사용하면 앞으로 입력 받아야 하는 부분이 많아지더라도 mii() 하나로 쉽게 입력을 받을 수 있습니다.

     

    정리

    lambda 함수가 익숙하지 않아 사용이 꺼려질 수 있지만 계속 사용하다보면 편리함을 느낄 수 있습니다. 과도하게 lambda 함수를 남발하여 코드 가독성이 떨어지는 일은 막아야 합니다. 간단한 코드는 lambda를 사용하여 쉽게 표현해 보시기 바랍니다.

     

    반응형