lambda 인자 : 리턴 값
의 형태를 지니는 익명(이름이 없는) 함수.
함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용한다.
# 이렇게 이름지어서 만드랴, 다시 호출하랴 손이 많이 가는 함수를,
>>> def plus(x, y):
return x + y
>>>plus(2,3)
5
# 이렇게 한 줄로 줄여주는게 바로 Lambda 표현식!
>>> (lambda x, y : x + y)(2, 3)
5
fruits = ['apple', 'banana', 'strawberry']
shortest = min(fruits, key= lambda n: len(n))
# shortest : 길이가 가장 짧은 이름
print(shortest)
# apple
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
인자 없이 sorted()만 쓰면, 리스트 아이템의 각 요소 순서대로 정렬된다.
b = sorted(a)
# b = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
# key 인자에 함수를 넘겨주면 해당 함수의 반환값을 비교하여 순서대로 정렬한다.
c = sorted(a, key = lambda x : x[0])
# c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1])
# d = [(3, 0), (5, 1), (0, 1), (1, 2), (5, 2)]
# 비교할 아이템이 요소가 복수 개일 경우, 튜플로 그 순서를 내보내주면 된다.
# -를 붙이면, 현재와 반대차순으로 정렬된다.
e = sorted(a, key = lambda x : (x[0], -x[1]))
# e = [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]
- key의 인자로 비교할 함수를 넣어주면 된다.
- 비교 함수는 비교할 아이템의 요소를 반환하면 된다.
- 비교함수는 lambda도 가능, 별도로 정의하는 것도 가능하다.
- 비교할 아이템의 요소가 복수 개일 경우, 튜플로 그 순서를 내보내주면 된다.
-
를 붙이면, 현재와 반대차순으로 정렬된다.
사실 BAEKJOON Online Judge #1966 풀다가 시간 안에 못 풀어서 해설 강의를 봤는데 그래도 이해가 안되어서 Lambda 관련 내용을 찾아보고 정리해보았다. (갑분 TMI..) 다시 풀어보니 이제야 이해가 간다.😇😇
선생님 글 출처남기면서 제 velog로 퍼가겠습니다.
사전처럼 사용하려는 velog라 상업적으로 사용이 될 수 없읍니다.
이제 막 시작하는 단계라 도움이 되네요. 감사합니다.