람다 (lambda)

람다(lambda) 함수란

파이썬에서 lambda 는 런타임에 생성해서 사용할 수 있는 익명함수입니다. 즉, 쓰고 버리는 일시적인 함수입니다.

람다함수의 특징

  • 메소드의 매개변수로 전달될 수 있고, 변수에 저장될 수 있다.
    • 즉, 어떤 전달되는 매개변수에 따라서 행위가 결정될 수 있음을 의미한다.
  • 컴파일러 추론에 의지하고 추론이 가능한 코드는 모두 제거해 코드를 간결하게 한다.

람다식 표현

  • 파라미터와 몸체로 구분된다.
  • 파라미터와 몸체 사이에 -> 구분을 추가하여 람다식을 완성시킨다.
(파라미터) -> {몸체}

lambda 인자리스트: 표현식

람다 함수를 즉석에서 생성하고, 반환한다.

>>> g = lambda x: x**2
>>> print(g(8))
64
>>>
>>> f = lambda x, y: x + y
>>> print(f(4, 4))
8

기본활용

lambda x: int(x)

문자열 변수를 정수형으로 변환.

lambda x,y: x>y

x, y 값을 비교.

lambda x: x['key']

딕셔너리에서 key를 이용해 value를 얻음.

다른 내장함수와의 활용

  • min, max
# min, max 함수
names = ['Suh', 'Adrian', 'Bill', 'Jonathan']

# longest : 길이가 가장 긴 이름
longest = max(names, key= lambda n: len(n))

print(longest)
# Jonathan

key 를 lambda n: len(n) 로 부여해 가장 길이가 긴 이름을 리턴한다.

# min, max 함수
dict = {'q': -1, 'a': 1, 'c': 2, 'b': 2}

max(list, key=lambda item: item[1])
>>> ('b', 2)

두번째 항목을 기준으로 비교해서 MAX를 찾는다.


  • sort 함수
    keys = [{'key': 8}, {'key': 5}, {'key': 9}, {'key': 3}]
    # sort 함수
    keys.sort(key = lambda x: x['key'])
    # [{'key': 3}, {'key': 5}, {'key': 8}, {'key': 9}]
    

    keys 리스트를 내부의 ‘key’ 들의 value를 기준으로 정렬하였다.


  • filter 함수
    # filter 함수
    filter(lambda x: x['key']<5, keys)
    

    ‘key’ 들의 value가 5보다 작은 요소들을 가져온다.

  • map 함수
    # map 함수
    map(lambda x: x['key']+5, keys)
    

    모든 ‘key’ 의 value에 5를 더한다.

댓글남기기