728x90
반응형

1. 개념 

식별자 없이 실행 가능한 일회성 함수. 

def 의 함수 선언 없이도 하나의 식으로 함수를 단순하게 표현할 수 있음. 

 

2. 사용 예시 

1) 리스트 정렬 시, key 값으로 전달 // 정렬의 우선 순위를 부여하는 경우에 사용하면 매우 편리 

 

s = [ ( 'A', 1 ) , ( 'Z', 2 ) , ( 'N', 9 ) , ( 'B', 3 ), ( 'H', 3 ) ] 을  숫자 기준 내림차순 , 문자 기준 오름차순으로 정렬하시오. 

s.sort( key = lambda x: ( -x[1], x[0] ) ) 

결과 : [('N', 9), ('B', 3), ('H', 3), ('Z', 2), ('A', 1)]

 

문자 순으로 정렬하되, 문자가 동일한 경우에는 식별자 순으로 나열하라. 

logs = ["let1 art ","let2 own","let3 art", "let4 cat", "let5 book"]

logs.sort( key = lambda x: ( x.split()[1:] , x.split()[0] ) ) 

결과 : ['let1 art ', 'let3 art', 'let5 book', 'let4 cat', 'let2 own']

 

3. 주의 사항 

map, filter 등과 함께 사용하면 가독성이 매우 떨어질 수 있으므로 주의해서 사용한다. 

또한, 꼭 필요한 경우가 아닐 때는 람다 표현식 보다는 리스트 컴프리핸션이 더 많이 사용된다. 

728x90
반응형

'알고리즘' 카테고리의 다른 글

자주 쓰이는 Python 표준 라이브러리  (0) 2020.10.05
DFS / BFS  (0) 2020.09.20
그리디 알고리즘  (0) 2020.09.18
728x90
반응형
n = int(input())
data = [] 
for i in range(n):
  data.append(list(input().split()))

data.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))

for i in data:
  print(i[0])

 

* sorted()

- iterable 객체가 들어왔을 때, 정렬된 결과를 반환함. 

- key 속성으로 정렬 기준을 명시할 수 있음. 

- 반대로 정렬하고 싶다면 reverse = True 를 사용. 

 

* lambda 

- 익명 함수 

 - [ lambda 인자 : 표현식 ] 형태 

- map() 함수와 함께 쓰거나 여러 조건으로 정렬하고 싶을 때, 사용하면 간편하다. 

ex)

# key = 함수 로 표현하면, 함수의 반환값을 기준으로 정렬함. 

A = sorted(A, key = lambda x : x[0]) 

# 여러 조건으로 정렬할 때, 
# x[0]으로 오름차순으로 정렬하고 , x[1]로 내림차순으로 정렬함.

A = sorted(A, key = lambda x : (x[0], -x[1])) 

 

728x90
반응형

'백준 > 다이나믹 프로그래밍' 카테고리의 다른 글

# 11726 2xn 타일링  (0) 2020.09.11
# 1003 피보나치 함수  (0) 2020.09.11
# 1463 1로 만들기  (0) 2020.09.11
# 9507 Generations of Tribbles  (0) 2020.09.11
# 9095 1,2,3 더하기  (0) 2020.09.11

+ Recent posts