Post

람다(lambda)

람다(lambda)

파이썬에서 람다(lambda) 함수는 간단한 익명 함수(이름이 없는 함수)를 작성할 때 사용된다. 람다 함수는 일반 함수와 유사한 기능을 수행하지만, def 키워드를 사용해 정의하는 일반 함수보다 구문이 간결하다.

  • 장점
    • 간결성: 간단한 함수를 한 줄의 코드로 작성할 수 있게 해주어, 코드의 간결성을 향상시킨다.
    • 익명성: 람다 함수는 이름이 없어서, 임시적으로 사용할 작은 함수를 만들 때 편리하다.
  • 단점
    • 제한된 기능: 람다 함수는 단일 표현식으로 제한되기 때문에, 복잡한 로직을 포함할 수 없다. 여러 행의 코드나 조건문, 반복문 등을 사용해야 하면 일반 함수를 사용해야 한다.
    • 디버깅의 어려움: 람다 함수는 익명이기 때문에, 디버깅 시에 오류의 위치를 추적하기 어려울 수 있다.

기본 구조

1
2
3
4
5
6
7
8
9
lambda arguments: expression

""" 여기서 arguments는 함수의 인자를 의미하며, expression은 함수의 반환값을 결정하는 표현식이다.
람다 함수는 expression을 평가(evaluate)하고 결과를 반환한다. """

# 리스트 정렬에 람다 사용 예시
names = ['John', 'Kane', 'Ariel', 'Zoe']
sorted_names = sorted(names, key=lambda name: len(name))
print(sorted_names)  # 출력: ['Zoe', 'John', 'Kane', 'Ariel']

활용 방안

  • 리스트 정렬: 람다 함수는 리스트와 같은 시퀀스를 특정 기준에 따라 정렬할 때 유용하다.
    • 시퀀스: 데이터가 연속적으로 나열된 구조
1
2
3
4
5
6
7
# 이름과 나이가 있는 튜플 리스트
people = [("John", 35), ("Anna", 25), ("Mike", 50)]

# 나이를 기준으로 오름차순 정렬
sorted_people = sorted(people, key=lambda person: person[1])
print(sorted_people)
# [('Anna', 25), ('John', 35), ('Mike', 50)]
  • 고차 함수와의 결합: map(), filter(), reduce()와 같은 고차 함수와 결합하여 사용될 때 강력하다.
    • 고차 함수: 다른 함수를 인자로 받거나 함수를 결과로 반환하는 함수
1
2
3
4
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)
# [1, 4, 9, 16, 25]
  • 조건부 표현식 사용: 람다 함수 내에서 조건부 표현식을 사용하여 간단한 조건 로직을 구현할 수 있다.
1
2
3
4
# 숫자가 양수인지 여부를 판단하는 람다 함수
is_positive = lambda x: True if x > 0 else False

print(is_positive(3)) # True
This post is licensed under CC BY 4.0 by the author.

© zwoong. Some rights reserved.