Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- list comprehension
- 상속
- 점프투파이썬
- 코딩테스트
- STL
- 데이터사이언스
- 백준
- 람다식
- OpenCV
- c++코딩테스트합격자되기
- 유도클래스
- 포인터
- 깊은복사
- 다형성
- C++
- 기본클래스
- 11382번
- 참조자
- 주피터
- 인프런
- 연산자오버로딩
- 제네릭프로그래밍
- 멤버함수로구현
- 코드잇
- 스택
- 얕은복사
- 프로그래머스lv2
- OOP
- 동적바인딩
- python
Archives
- Today
- Total
WjExplor Story
lambda 식 표현 본문
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) 작업을 수행합니다.
'Python > Python : Code Study' 카테고리의 다른 글
| [점프 투 파이썬] 4장 파이썬의 입출력 되새김 문제 Q1 ~ Q8 (1) | 2025.09.12 |
|---|---|
| 리스트 컴프리헨션(List Comprehension) (0) | 2025.09.11 |
| [점프 투 파이썬] 3장 제어문 되새김 문제 Q1 ~ Q6 (0) | 2025.09.11 |
| [점프 투 파이썬] 2장 자료형 되새김 문제 Q8 ~ Q12 (0) | 2025.09.10 |
| Mutable 과 Immutable (1) | 2025.08.31 |