본문 바로가기

Programming/Python

lambda

#Lambda


Lambda는 함수를 간단하게 사용할 수 있도록 도와준다.

이는 이름이 없는 함수, 익명함수라고 하기도 한다.

이는 함수형 프로그래밍 언어에서의 lambda 와 정확히 똑같은 것은 아니지만, 파이썬 내에서 잘 통합되어 있으며

filter(), map(), reduce() 와 같은å 전형적인 기능 개념과 함께 사용되는 강력한 함수이다.

lambda는 쓰고 버리는 일시적인 함수이다. 즉, 함수가 생성된 곳에서만 사용이 가능하다.

lambda 인자리스트 : 표현식

g = lambda x: x**2
print(g(8))
#64

f = lambda x,y : x+y
print(f(4,4))
#8

람다의 정의에는 return 문이 포함되어 있지 않다.

반환값을 만드는 표현식이 포함되어 있다.

함수가 사용될 수 있는 곳에는 어디나 lambda 정의를 사용할 수 있으며, 위 예시처럼 굳이 변수에 할당하여 사용할 필요는 없다.

간단히 생각해보면 lambda [Input] : [Output] 의 개념으로 생각해 볼 수 있다.

map() 응용


람다 함수의 장점은 map()함수와 함께 사용될 떄 볼 수 있다.

map() 은 두 개의 인자를 가지는 함수이다.

r = map(function, iterable, ...)

첫 번째 인자 function은 함수의 이름이다, 두 번째 인자 iterable은 한번에 하나의 멤버를 반환할 수 있는 객체이다,

이를테면 list, str, tuple 등이 예시가 될 수 있다.

이와 같이 map() 함수는 functioniterable의 모든 요소에 대하여 적용한다.

그리고 function에 의해 변경된 iterator를 반환한다.

a = [1,2,3,4]
b = [17, 12, 11, 10]
arr = list(map(lambda x,y : x+y, a,b))

#[18, 14, 14, 14]

filter() 응용


filter() 함수 또한 두개의 인자를 가진다.

r = filter(function, iterable)

filter에 인자로 사용되는 function은 처리되는 각각의 요소에 대하여 Boolean값을 반환한다.

True반환시 그 요소는 그냥 남게되고, False반환시 그 요소는 제거된다.

a = [2, 18, 9, 22, 17, 24, 8, 12, 27]
arr = list(filter(lambda x: x % 3 == 0, a))
print(arr)

##[18, 9, 24, 12, 27]

'Programming > Python' 카테고리의 다른 글

BFS Concept & Implementation  (0) 2019.10.21
BFS&DFS  (0) 2019.10.21
map_join_product  (0) 2019.10.16
sorted_zip  (0) 2019.10.15
int_just_ascii  (0) 2019.10.11