Python/문법

[Python 문법] 람다 표현식(lambda expression)

마이구미+ 2023. 6. 8. 13:51

람다 표현식(lambda expression)

  • 람다 표현식은 이름이 없는 함수를 만듦
  • 그래서 익명 함수(anonymous function)라고도 부름
  • 형식
    • lamda 매개변수들: 식

- 예제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
  • if문 사용 가능

- 예제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번째 인덱스 값의 내림차순으로 정렬됨