WjExplor Story

lambda 식 표현 본문

Python/Python : Code Study

lambda 식 표현

더블유제이플로어 2025. 9. 11. 18:40
a = [lambda a,b:a+b , lambda a,b:a*b]
print(a[0](3,4)) #7
print(a[1](4,5)) #20

람다는 이름을 안 짓고 사용할 수 있다.

실무에서 자주 사용된다. 함수를 넘겨야 할 경우 간단한 경우는 람다로 넘기는게 편하다.


Gemini 에게 물어본 파이썬 람다식 예제

AI 비전 분야에서 람다식(lambda)은 주로 함수에 간단한 연산이나 조건을 적용할 때 유용하게 사용됩니다. 복잡한 함수를 정의할 필요 없이, 즉석에서 간단한 함수를 만들어서 다른 함수의 인자로 전달할 때 특히 유용합니다.

1. sort() 함수와 함께 사용하기

이미지 파일들의 경로가 담긴 리스트를 이름 순서가 아닌, 특정 기준(예: 파일명에 포함된 숫자)에 따라 정렬해야 할 때 람다식을 사용합니다.

file_list = ['image_10.jpg', 'image_2.jpg', 'image_1.jpg', 'image_20.jpg']

# 파일명에서 숫자 부분만 추출하여 정렬
file_list.sort(key=lambda x: int(x.split('_')[1].split('.')[0]))

print(file_list)
# 결과: ['image_1.jpg', 'image_2.jpg', 'image_10.jpg', 'image_20.jpg']
  • 설명: sort() 함수의 key 인자에 람다식을 전달하여, 각 파일명 x를 정렬하는 기준으로 사용합니다. 람다식은 파일명에서 _ 뒤의 숫자만 추출해 정수로 변환하여 리스트를 숫자 순서대로 정렬하게 합니다.

2. filter() 함수와 함께 사용하기

이미지 데이터셋에서 특정 조건을 만족하는 파일만 필터링하고 싶을 때 filter() 함수와 람다식을 함께 사용할 수 있습니다. 예를 들어, 특정 클래스(Class)에 해당하는 이미지들만 골라낼 때 유용합니다.

data = [
    {'class': 'cat', 'file': 'cat_1.jpg'},
    {'class': 'dog', 'file': 'dog_1.jpg'},
    {'class': 'cat', 'file': 'cat_2.jpg'}
]

# 'cat' 클래스에 해당하는 데이터만 필터링
cat_images = list(filter(lambda x: x['class'] == 'cat', data))

print(cat_images)
# 결과: [{'class': 'cat', 'file': 'cat_1.jpg'}, {'class': 'cat', 'file': 'cat_2.jpg'}]
  • 설명: filter() 함수는 람다식의 조건(x['class'] == 'cat')이 True인 항목만 걸러냅니다. 람다식을 사용하면 한 줄로 간결하게 필터링 로직을 작성할 수 있습니다.

3. map() 함수와 함께 사용하기

AI 모델의 예측 결과를 후처리할 때 map() 함수와 람다식을 자주 사용합니다. 예를 들어, 모델이 반환한 확률 값들을 특정 범위로 변환하거나, 텐서(Tensor) 객체를 특정 타입으로 변환할 때 유용합니다.

predictions = [0.95, 0.88, 0.52, 0.25]

# 예측 결과가 0.8 이상인 경우에만 1로 변환
binary_results = list(map(lambda p: 1 if p >= 0.8 else 0, predictions))

print(binary_results)
# 결과: [1, 1, 0, 0]
  • 설명: map() 함수는 람다식의 연산을 리스트의 모든 요소에 일괄적으로 적용합니다. 위 예시에서는 각 예측값 p가 0.8 이상이면 1로, 아니면 0으로 변환하는 간단한 이진화(binarization) 작업을 수행합니다.