Study/Python

[Python/파이썬] lambda와 sort 정리

growingtree 2021. 3. 23. 00:22

 

 

 

 

파이썬에서 정렬을 할 때 기준(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 

www.acmicpc.net/problem/10825

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net

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를 넣으면 된다. 

람다에 들어있는 표현식의 순서대로 정렬이 됨. 

 

 


참고사이트 

 

dailyheumsi.tistory.com/67

파이썬 정렬, 다중 조건으로 한 번에 하기.

파이썬으로 문제를 풀다보면, 여러 조건으로 소팅을 해야하는 경우가 있다. 일반적인 소팅은 다음과 같이 sorted() 혹은 .sort() 를 사용한다. a = [4,1,2,5,7,3,6] b = sorted(a) # b = [1,2,3,4,5,6,7] sorted()..

dailyheumsi.tistory.com

m.blog.naver.com/PostView.nhn?blogId=pjok1122&logNo=221590043882&proxyReferer=https:%2F%2Fwww.google.com%2F

[Python] 람다(lambda) 함수 사용하기

1. lambda 함수​람다 표현식은 기존의 함수식보다 메모리, 속도 면에서 우수하다. 파이썬은 OOP(객체 ...

blog.naver.com

dpdpwl.tistory.com/87

[Python]파이썬 람다(lambda)함수(람다식/익명함수)

람다는 함수를 간단하게 사용가능하게 해줍니다. 람다는 이름이 없는함수, 익명함수라고 하기도 합니다. 람다를 사용하는 방법은 매우 간단합니다. 매개변수 두개를 받아 두수의 합을 리턴하는

dpdpwl.tistory.com

wikidocs.net/64

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

반응형