람다 표현식(lambda expression)
- 람다 표현식은 이름이 없는 함수를 만듦
- 그래서 익명 함수(anonymous function)라고도 부름
- 형식
- 예제1 (덧셈)
sum = lambda x: x + 10
print(sum(10))
# 출력결과
# 20
- 변수에 람다식을 담으면 해당 변수를 함수처럼 사용할 수 있음
- 예제2 (곱셈)
multiplication = lambda x, y: x * y
print(multiplication(6, 5))
# 출력결과
# 30
- 예제3 (if문)
check_pass = lambda x: "pass" if x >= 70 else "fail"
print(check_pass(20))
print(check_pass(90))
# 출력결과
# fail
# pass
- 예제4(for문)
value_of_two_times_table = list(map(lambda x: x * 2, range(1, 10)))
print(value_of_two_times_table)
# 출력결과
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
- 정확히 말하면 for문은 아니고 map() 함수를 이용해서 for문처럼 활용 가능함
- 예제5 (정렬)
그냥 정렬
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
b = sorted(a)
print(b)
# 출력결과
# [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
우선순위 정렬
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
c = sorted(a, key=lambda x: x[1])
print(c)
# 출력결과
# [(3, 0), (5, 1), (0, 1), (1, 2), (5, 2)]
- key라는 매개변수에 람다식을 넣어주면 우선순위가 정해짐
- key는 sorted 함수에 원래 매개변수로 들어가는 옵션임
- 튜플 1번째 인덱스 값 기준으로 정렬됨
내림차순 정렬
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
d = sorted(a, key=lambda x: -x[0])
print(d)
# 출력결과
# [(5, 1), (5, 2), (3, 0), (1, 2), (0, 1)]
- 정렬 기준이 되는 식 앞에 -를 붙이면 내림차순 정렬됨
- 튜플 0번째 인덱스 값 기준으로 내림차순
비교 요소가 여러 개인 정렬
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
e = sorted(a, key=lambda x: (x[0], -x[1]))
print(e)
# 출력결과
# [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]
- 튜플 0번째 인덱스 값 기준으로 먼저 정렬되고, 값이 같은 경우 튜플 1번째 인덱스 값의 내림차순으로 정렬됨