새소식

AI 개발

[Python] lambda, map, filter, reduce

  • -

 

 

lambda(), map(), filter(), reduce() 함수는 함수를 간단하게 만들어주는 함수들로 파이썬에서 프로그래밍할 때 if elif else문을 이용하여 복잡하게 하드코딩할 필요없이 한줄로 함수를 구현하게 해주는 함수들입니다.

 

 

● lambda()

lambda 인자 : 표현식

 

함수를 한 줄로 만들어주는 함수입니다.

def plus(x, y):
	return x + y
    
plus(10, 20)

와 같은 함수를 람다함수를 사용하면 함수명을 명시하지 않고 함수를 사용할 수 있습니다.

(lambda x,y:x + y)(10, 20)

 

람다함수는 런타임에서 생성해 사용할 수 있는 익명함수로, 쓰고버리는 일시적인 함수입니다. 

이러한 람다함수도 람다함수를 변수에 할당하여 재사용할 수 있습니다.

lambdaAdd = lambda n,m:n+m
print(lambdaAdd(1,2))

# 결과 3

 

람다식 안에서 조건도 사용 가능합니다.

print((lambda n,m: n if n%2==0 else m)(1,3))
# 결과 3

print((lambda n,m: n if n%2==0 else m)(2,3))
# 결과 2

 

그리고 람다함수는 map, filter, reduce처럼 매개변수로 함수가 필요한 곳에 유용하게 사용할 수 있습니다.

 

 

 

 

● map()

map(함수, 리스트)

 

map()은 함수와 리스트를 인자로 받습니다. 그리고 그 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아줍니다.

map(lambda x: x ** 2, range(5))             # 파이썬 2
# 결과 [0, 1, 4, 9, 16]  

list(map(lambda x: x ** 2, range(5)))     # 파이썬 2 및 파이썬 3
# 결과 [0, 1, 4, 9, 16]

 

 

 

 

● reduce()

reduce(함수, 순서형 자료)

 

reduce()는 순서형 자료인 문자열, 리스트, 튜플의 원소를 누적하여 함수에 적용시킵니다.

from functools import reduce   # 파이썬 3

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

# 결과 10

0과 1을 더하고, 그 결과에 3을 더하고, 그 결과에 4를 더하고를 반복합니다.

 

 

 

● filter()

filter(함수, 리스트)

 

리스트에 있는 원소들을 함수에 적용시켜 결과가 참인 값들로 새로운 리스트를 만들어주는 함수가 filter()입니다.

filter(lambda x: x < 5, range(10))       # 파이썬 2
# 결과 [0, 1, 2, 3, 4]  
list(filter(lambda x: x < 5, range(10))) # 파이썬 2 및 파이썬 3
# 결과 [0, 1, 2, 3, 4]

 

 

 

 

 

참고글 : Python Lambda Function

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.