Tiny Finger Point Hand With Heart
본문 바로가기
Python

[함수] lambda 함수(익명함수)

by yoondii 2023. 1. 17.
728x90
반응형

 

람다디람다디람다리람~

lambda 매개변수 : 표현식

한줄로 함수를 만들어내는 아주 유용한 녀석이다. 

 

def plus(x, y):
   return x + y
------------------
plus(10, 20)
30

위의 식을 한줄로 만들어 보겠다.

(lambda x,y : x + y)(10,20)
-----------------
30

매개변수를 지정하고, 표현식을 만든다음 인자를 넣어주면 된다.

따란~ 이렇게 쉽게 만들 수 있다.


람다함수 사용 예

sorted함수의 경우 key위치인자에 함수를 보내서, 함수에서 지장한 결과값에 따라서 정렬을 할 수 있다.

다음과 같은 문자를 정렬할때

target = ['  cat ', ' tiger ', '    dog', 'snake   ']

알파벳 순서가 아니라, 앞뒤 불필요한 공백을 제외한 문자의 길이로 정렬을 하고 싶다면,

정렬의 기준으로 사용할 값을 리턴하는 함수를 생성하여, sorted함수에 넘겨줘야 한다.

def my_key(string):
     return len(string.strip())
target = ['  cat ', ' tiger ', '    dog', 'snake   ']
print(sorted(target, key=my_key))

하지만 my_key라는 함수는 이번 정렬만을 위한 함수이다. 재사용할 이유가 없다면 lambda 함수를 생성하여 넘겨주자.

target = ['cat', 'tiger', 'dog', 'snake']
print(sorted(target, key=lambda x : len(x.strip())))

-------------------------------------------------------
['cat', 'dog', 'tiger', 'snake']

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

https://www.acmicpc.net/problem/10825

 

10825번: 국영수

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

www.acmicpc.net

람다를 사용해서 풀 수 있는 문제이다.

728x90
반응형

댓글