람다 함수
람다 함수는 한 줄의 문(statement)으로 정의하는 함수로 축약 함수라고도 합니다.
- 람다 함수
1) 구문(Syntax)
lambda 콤마로 구분된 인수들 : 식
2) 특징
- 함수처럼 기본 인수와 가변 인수를 가질 수 있음
- 대부분 함수 이름을 정하지 않고, 일회성으로 사용
3) 람다 함수 사용
아래 코드와 같이 람다 함수를 사용하면 보다 쉽게 정의 및 사용할 수 있습니다. 1부터 10까지의 수를 대입해 각각 다항식을 계산하는 코드입니다.
----------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
# 일반 함수 사용
def f1(x):
return x*x + 3*x -10
def f2(x):
return x*x*x
def g(func):
return [func(x) for x in range(1,11)]
print g(f1)
print g(f2)
# 람다 함수 사용
def g2(func):
return [func(x) for x in range(1,11)]
print g2(lambda x: x*x + 3*x -10)
print g2(lambda x: x*x*x)
----------------------------------------------------------------------------------------
(실행 결과)
[-6, 0, 8, 18, 30, 44, 60, 78, 98, 120]
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
[-6, 0, 8, 18, 30, 44, 60, 78, 98, 120]
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
----------------------------------------------------------------------------------------
- 람다 함수의 활용
람다 함수를 활용하는 방법입니다. map(), filter(), reduce() 세 내장 함수를 같이 활용합니다. 세 내장 함수는 공통적인 인자를 가집니다.
- 첫 번째 인자 : function(함수) → 일반적으로 람다 함수 활용
- 두 번째 인자 : 시퀀스 자료형 → 문자열, 리스트, 튜플 활용
1) map() 내장 함수
- 구문(Syntax)
map(function, seq)
# 각 원소 값들에 대해 함수에 적용한 결과를 동일한 자료형으로 반환
- 활용
----------------------------------------------------------------------------------------
X=[1,2,3,4,5]
Y=map(lambda x:x*x, X) # X가 리스트이므로 결과도 리스트로 반환
print Y
----------------------------------------------------------------------------------------
(실행 결과)
[1, 4, 9, 16, 25]
----------------------------------------------------------------------------------------
2) filter() 내장 함수
- 구문(Syntax)
filter(function, seq)
# 각 원소 값들에 대해 함수에 적용한 결과 중 참인 원소 값들만 동일한 자료형으로 반환
- 활용
----------------------------------------------------------------------------------------
F='python study'
G=filter(lambda x: x>'o', F) # 알파벳 o 보다 큰 문자만 반환
print G
----------------------------------------------------------------------------------------
(실행 결과)
pytstuy
----------------------------------------------------------------------------------------
3) reduce() 내장 함수
- 구문(Syntax)
filter(function, seq, (initial))
# 각 원소 값들에 대해 함수에 적용하면서 하나의 값으로 매핑
# 람다 함수 인자가 반드시 2개여야하며, initial(초기값)은 앞의 인자의 초기 값
- 활용
----------------------------------------------------------------------------------------
print reduce(lambda x,y : x+y, range(1,6))
----------------------------------------------------------------------------------------
initial 즉 초기 값을 설정하지 않으면 0이 들어가게 됩니다. 앞의 인자에 결과를 임시 누적하면서 계속 뒤에 인자와 연산을하고 최종적으로 계산된 결과를 출력합니다.
(실행 결과)
15
----------------------------------------------------------------------------------------
- 활용2
문자열의 초기값으로 n을 주고 거꾸로 뒤집은 결과입니다.
----------------------------------------------------------------------------------------
print reduce(lambda x,y : y+x, 'ohtyP','n')
----------------------------------------------------------------------------------------
(실행 결과)
Python
----------------------------------------------------------------------------------------
* 출처 : 한국기술교육대학교 온라인평생교육원 파이썬프로그래밍
'언어 > Python' 카테고리의 다른 글
[파이썬] 함수 (0) | 2017.03.06 |
---|---|
[파이썬] 디렉토리 다루기 (0) | 2017.02.25 |
[파이썬] 파일 다루기 (0) | 2017.02.24 |
[파이썬] 파일 입·출력 (0) | 2017.02.22 |
[파이썬] 사전 (0) | 2017.02.19 |