728x90
파이썬에서 정렬을 할 때 기준(key)로써 사용하는 lambda에 대한 정리
1. 람다(lambda)란?
람다는 익명함수라고도 하며 함수를 딱 한 줄로 완성시켜주는 표현식이다.
2. 람다(lambda)의 장점
람다 표현식은 기존의 함수보다 메모리, 속도 측면에서 더 빠르다.
파이썬은 객체지향 프로그래밍 언어이므로 모든 것이 객체로 저장이 된다. 함수 또한 마찬가지.
함수를 정의하게 되면 실행하면서 메모리를 쓰게 되는데 , 람다의 경우 함수이지만 일회성이므로 한 번 사용하고 없어진다. 따라서 메모리 소모도 없음!
3. 람다(lambda)의 형태
람다 표현식은
lambda 인자 : 표현식
의 형태를 띄고있다.
4. 람다(lambda)의 사용법
람다는 여러 형태로 사용이 가능하다.
fu = lambda x : x + 1 print(fu(3)) #실행 결과로 4가 나온다.
map,reduce,filter와 같은 다른 함수도 같이 쓰인다.
람다 안에 조건문도 가능하다.
print((lambda x,y: x if n%2==0 else y )(1))
5. 여러 조건으로 정렬을 해야할 때 사용하는 람다(lambda)
여러 조건으로 정렬을 해야할 때 lambda가 유용하게 쓰인다.
+) 백준 10825
import sys n = int(sys.stdin.readline()) li = [] for _ in range(n): li.append(sys.stdin.readline().split(" ")) # -int(x[1]),int(x[2]),-int(x[3]),x[0]) 순으로 정렬한다. 앞에 - 가 붙으면 내림차순 li.sort(key=lambda x : (-int(x[1]),int(x[2]),-int(x[3]),x[0])) for t in li : print(t[0])
리스트의 메소드인 sort의 key 인자에 lambda를 넣으면 된다.
람다에 들어있는 표현식의 순서대로 정렬이 됨.
참고사이트
반응형
'Study > Python' 카테고리의 다른 글
[Python/파이썬] 프로세스(Process)와 쓰레드(Thread) (3) | 2021.10.11 |
---|---|
[Network/Python] socket으로 데이터 주고받기 (+ 삽질) (2) | 2021.03.28 |
[Django/Python] (진행중) 점프 투 장고 2-1. 주소와 화면을 연결하는 URL과 뷰 (1) | 2021.03.22 |
[Python/파이썬] 파이썬 입력받는 방법 with input()과 sys.stdin.readline() (0) | 2021.03.09 |
[Python/파이썬] 리스트의 두 요소 위치 변경하기 (스와프,swap) (1) | 2021.02.10 |