파이썬 람다

GOTAEUK·2022년 2월 12일
0
post-thumbnail

파이썬에서 함수를 정의하기 위해서는 def키워드를 사용하는데 def 키워드를 사용하면 함수 정의와 호출이 따로 이루어지는 것이다. 람다 함수를 사용하면 정의부터 호출까지 한번에 한줄로 가능하게 할 수 있다.
이 글에 언급하는 map, filter, reduce 함수 뿐만 아니라 sort, sorted함수에서도 유용하게 사용되니 잘 알고 있어야 한다.


1. lambda

람다 함수는 이름이 없기 때문에 익명함수라고 부르기도 한다. 사용법은 간단하다. lambda 매개변수 : 표현식 이다.

def add(x,y):
	return x+y
print(add(1,2))

위의 코드를 lambda를 사용해 다음과 같이 한줄로 나타낼 수 있다. 두 함수 모두 결과는 3이 나온다.

print((lambda x,y:x+y)(1,2))

2. map

map 함수의 첫번째 인자는 함수, 두번째 인자는 이터러블 객체가 오는데 여기서 이터러블 객체는 반복이 가능한 자료형으로 리스트, 튜플 등이 있다.

map 함수는 이터러블 객체의 각 요소들을 함수를 실행시켜 반환하는 기능을 한다.

첫번째 인자에서 lambda함수를 사용하는 것이 일반함수를 정의해 사용하는 것보다 편리하기 때문에 다음과 같이 사용한다. map 객체가 리턴되기 때문에 list로 형변환을 해줘야 한다.

list_a = [1, 2, 3, 4, 5]
print(list(map(lambda x: x+2, list_a)))

# 결과: [3, 4, 5, 6, 7]

3. filter

filter 함수도 map 함수와 마찬가지로 첫번째 인자로 함수, 두번째 인자로 리스트나 튜플같은 터러블 객체가 들어간다. filter함수는 이터러블 객체의 각 요소들을 첫번째 인자의 함수로 실행했을 경우 True이면 값을 남긴다.

list_a=[1,2,3,4,5]
print(list(filter(lambda x: x %2==0,list_a)))

# 결과: [2,4]

4. reduce

함수형 프로그래밍에서 map, filter와 함께 reduce도 많이 사용되는데 reduce함수는 누적 집계를 구하기 위해 사용되는 함수이다. reduce(함수, 시퀀스, 초기값)의 형태로 사용가능하다. 초기값에 따라 TypeError가 발생할 수 있으니 이 점을 유의해야 한다.

from functoools import reduce
reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])

# 결과: 10

출처 및 참고

profile
한걸음씩

0개의 댓글