티스토리 뷰
람다(lambda) 함수란?
lambda 인자: 표현식
lambda는 이름이 없는 함수로 익명 함수(anonymous function)라고도 불린다.
일반적으로 함수를 한번만 사용하거나 함수를 인자로 전달해야 하는 경우에 매우 유용하게 사용된다.
예를 들면, 인자로 들어온 값에 2를 곱해서 반환한다고 하면 lambda x: x*2 이런식으로 표현이 된다.
간단하다.
그럼 두 인자를 더하는 add 함수를 일반함수와 람다함수를 사용하여 이해력을 높여보자.
일반함수는 다음과 같이 정의된다.
def add(x,y):
print x+y
이 함수를 람다함수로 바꾸면 다음과 같이 정의된다.
add = lambda x,y: x+y
람다함수는 def 키워드를 사용하여 함수를 정의하는 것보다 간결하고 간편한 방식으로 함수를 정의할 수 있다.
람다(lambda) 함수의 활용 예제
1. map() 함수와 lambda 함수 사용
map(함수, 리스트 or 튜플)
> 두번째 인자인 리스트나 튜플을 첫번째 인자인 함수에 적용한 결과를 반환한다.
예를들어, 리스트의 모든 값에 2씩 더해서 새로운 리스트를 만든다고 할 때, 다음과 같이 사용할 수 있다.
#일반함수 사용
def is_even(x):
return x%2==0
rst = list(filter(is_even,[1,2,3,4,5]))
print(rst) #[3,4,5,6,7]
이를 람다함수를 사용하면 다음과 같다.
#람다함수 사용
rst = list(map(lambda x: x+2,[1,2,3,4,5]))
print(rst) #[3,4,5,6,7]
2. filter() 함수와 lambda 함수 사용
filter(함수, 리스트 or 튜플)
> 첫번째 인자인 함수에 두번째 인자로 들어온 리스트나 튜플을 하나씩 받아 필터링할 함수를 넣는다.
예를 들어, 리스트에서 짝수들만 추출하고 싶을 때, 다음과 같이 사용할 수 있다.
#일반함수 사용
def is_even(x):
return x%2==0
rst = list(filter(is_even,[1,2,3,4,5]))
print(rst) #[2, 4]
이를 람다함수를 사용하면 다음과 같다.
rst = list(filter(lambda x: x%2==0,[1,2,3,4,5]))
print(rst) # [2, 4]
3. sorted() 함수와 lambda 함수 사용
sorted(리스트 or 튜플)
> 인자인 리스트, 튜플 등의 요소를 정렬한 결과(오름차순)를 반환한다. 기본적으로 reverse=False이다.
물론, sorted(reverse=True)를 이용하면 내림차순으로도 구현 가능하다.
sorted() 함수는 key라는 매개변수를 가지며, key값을 기준으로 정렬되며 기본값은 오름차순이다.
예제를 보면, 더 이해가 쉬울 것이다.
num_list = [-2,1,10,0,-7]
num_list = sorted(num_list) #기본값인 오름차순으로 정렬
print(num_list) #[-7, -2, 0, 1, 10]
num_list = sorted(num_list, key=abs) #절대값인 abs를 기준으로 오름차순으로 정렬
print(num_list) #[0, 1, -2, -7, 10]
num_list = sorted(num_list, key=abs, reverse=True) #절대값인 abs를 기준으로 내림차순으로 정렬
print(num_list) #[10, -7, -2, 1, 0]
리스트뿐만 아니라, dictionary 정렬도 가능하다.
movie_dict = {"Toy story":10, "Iron man":3, "Coco":17, "Wreck it ralph":9}
# 1. 기본 sorted() 적용
movie_dict1 = sorted(movie_dict) #영화 이름에 대해서만 알파벳 순서대로 정렬
print(movie_dict1) # ['Coco', 'Iron man', 'Toy story', 'Wreck it ralph']
# 2. 영화 이름(key) 기준
movie_dict2 = sorted(movie_dict.items(), key=lambda x: x[0])
# print(movie_dict2) # [('Coco', 17), ('Iron man', 3), ('Toy story', 10), ('Wreck it ralph', 9)]
# 3. 숫자 (value) 기준
movie_dict3 = sorted(movie_dict.items(), key=lambda x: x[1])
print(movie_dict3) # [('Iron man', 3), ('Wreck it ralph', 9), ('Toy story', 10), ('Coco', 17)]
조금 더 응용 보전을 공부하고 싶다면 [바로가기]
4. reduce() 함수와 lambda 함수 사용
reduce(함수, 리스트 or 튜플)
> 리스트, 튜플의 모든 요소를 누적적으로 계산한 결과를 반환한다.
예를들어, 리스트의 모든 값들을 곱하고자 한다면, 다음과 같이 사용할 수 있다.
from functools import reduce
#일반함수 사용
def multiply(x,y):
return x*y
print(reduce(multiply,[1,2,3,4,5])) #120
이를 람다함수를 이용하면 다음과 같다.
#람다함수 사용
print(reduce(lambda x,y:x*y,[1,2,3,4,5])) #120
'파이썬' 카테고리의 다른 글
- Total
- Today
- Yesterday
- sorted
- *args
- Sort
- **
- 파이썬
- 경사하강법
- policy function
- adrew ng 머신러닝 강의
- python
- Andrew Ng
- 강의노트 정리
- NumPy
- numpy 배열 속성
- **kwargs
- 비용함수
- action value function
- computation graph
- 딥러닝
- numpy 배열 생성
- 손실함수
- 백준
- 로지스틱 회귀
- state value function
- omp: error #15
- baekjoon
- 앤드류응
- *
- 숏코딩
- 강화학습
- 11870
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |