람다 란?
한마디 버전 한국어 : 람다는 익명의 함수 입니다. 람다는 제한 없이 인수(Arguments)를 받아 드릴 수 있지만, 한개의 익스프레션만 가질 수 있습니다. 영어 : Lambda is a small and anonymous function. It can take any number of arguments, but have only one expression. |
사전적 의미 : Λ, λ(그리스어: λάμδα 람다[*])는 그리스 문자 중의 11번째, 그리스 숫자로는 30을 뜻한다. Λ는 다음과 같이 사용된다.
- 입자물리학에서 람다 중입자
- 우주 상수
- 물리학에서 파장
- 방사선 반감기
- 선형대수학에서 고윳값
- 신경생물학에서 길이상수
- 람다 대수에서 함수 표현식
- 리스프, 파이썬 등의 프로그래밍 언어에서, 함수를 정의할 때에 사용된다.
- 게임 하프라이프 시리즈의 로고이자 작중에 등장하는 반시민의 상징.
1. 사용법
lambda arguments : expression
x = lambda a : a + 100
print(x(200))
x = lambda a, b : '{}와 {}를 곱한 값은 {}입니다.'.format(str(a), str(b), str(a*b))
print(x(2, 5))
x = lambda a, b, c : ' '.join([a, b, c])
print(x('몇 개든', '상관', '없어요')) >>> 300 >>> 2와 5를 곱한 값은 10입니다. >>> 몇 개든 상관 없어요
2. 왜 사용할까?
람다의 백미는 함수 안에서 다른 작은 익명의 함수로 사용할 수 있다는 것 입니다.
def myfunc(n):
return lambda a : a * n
double = myfunc(2)
print(double(11))
triple = myfunc(3)
print(triple(11))
# 이런 방식으로도 사용할 수 있습니다.
print((lambda x: x + 50)(10))
# 람다를 이용한 Sorting
student = [
['김철수', 'A', '2학년'],
['이영희', 'B', '3학년'],
['딩그르', 'F', '1학년'],
['짱짱맨', 'C', '1학년']
]
#학년으로 먼저 소팅 후 학년이 같으면 학점으로 다시 소팅
print(sorted(student, key=lambda x: (x[2], x[1])))
# 람다 안에서 변수 선언? 노노~
print((lambda x: y = 10; x + y)(1)) >>> 22 >>> 33 >>> 60 >>> [ ['짱짱맨', 'C', '1학년'], ['딩그르', 'F', '1학년'], ['김철수', 'A', '2학년'], ['이영희', 'B', '3학년'] ] >>> File "python.py", line 29 print((lambda x: y = 10; x + y)(1)) ^ SyntaxError: invalid syntax
여담:
람다의 목적은 인문계과 이공계를 나누는 역할을 합니다.
入이 뭐냐고 물으면 인문계는 '들 입' 이라고 하고, 이공계는 '람다' 라고 한다고 합니다. ㅋㅋ