람다 함수


 람다 함수는 한 줄의 문(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

+ Recent posts