아주 작으며 이름이 없는 함수
문법적으로는 하나의 표현식만 사용되어야 함
def function(x): return x lambda x : x
{ 키워드 : lambada}
{ 매개변수 : x }
{ 실행영역 : x }
인수 x에 1을 더하는 식
lambda x : x+1
문법적으로는 하나의 표현식만 사용되어야 함
(lambda x : x+1)(2)
위의 식이 실행되는 과정
(lambda x : x+1)(2) = lambda 2 : 2 + 1 = 2 + 1 = 3
람다함수를 함수명으로 할당하여 호출
add_one = lambda x : x+1 add_one(2) 3
위의 람다함수와 동일한 일반 함수
def add_one(x) : return x+1
람다함수는 일반함수와 동일한 매개변수 사용이 가능
>>> (lambda x, y, z : x + y + z)(1, 2, 3) 6 >>> (lambda x, y, z=3 : x + y + z)(1, 2) 6 >>> (lambda x, y, z=3 : x + y + z)(1, y=2) 6 >>> (lambda * args : sum(args))(1, 2, 3) 6
익명함수는 이름이 없는 함수
>>> lambda x, y : x+y
익명함수 호출
-() 형태로 대화형 인터프리터 방식의 함수 호출
>>> -(1,2) 3
익명함수 정의와 동시에 호출
>>> (lambda x, y : x + y)(2,3) 5
람다함수 변수 정의 함수 변수를 선언가능
>>> high_ord_func = lambda x, func : x + func(x) >>> high_ord_func(2, lambda x : x*x) 6 >>> high_ord_func(2, lambda x : x+3) 7
map(function, iterable, ...)
함수(function)와 반복 가능한(iterable) 자료형을 입력
입력받은 자료형의 각 요소를 함수가 수행한 결과를 리턴
>>> my_power(x): return x*2 >>> list(map(my_power,[1, 2, 3, 4])) [2, 4, 6, 8] >>>list(map(lambda a: a*2, [1, 2, 3, 4])) [2, 4, 6, 8]
Filter 함수는 걸러낸다는 의미
filter 함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형
두 번째 인수인 반복 가능한 자료형 요소가 첫 번째 인수인 함수에 입력되었을 때 반환 값이 참인 경우만 리턴
def my_positive(numberList): result = [] for num in numList: if num >0: result.append(num) return result print(my_positive([1, -7, 5, 0, -4, 6])) def my_positive(x): return x > 0 print(list(filer(my_positive, [1, -7, 5, 0, -4, 6]))) [1, 5, 6] >>> list(filter(lambda x : x>0, [1, -7, 5, 0, -4, 6])) [1, 5, 6]
reduce(function, iterable)
함수(function)와 반복 가능한(iterable)자료형을 입력
입력받은 원소와 함수의 리턴 값을 누적한 하나의 결과를 리턴
>>> reduce(lambda x, y : x+y, [30, 40, 80, 60]) 210
리스트의 최대값을 구하는 람다식을 reduce 이용하여 작성
>>> f = lambda a, b : a if(a > b) else b >>> reduce(f, [50, 22, 42, 103, 13]) 103 >>> 1에서 100까지의 합을 구하는 식 >>> reduce(lambda x, y : x+y, range(1,101)) 5050
cf ) reduce함수를 쓰기위해서는
from functools import reduce
를 추가해주어야함
람다식의 활용