나는야 데이터사이언티스트/PYTHON

[Python]lambda 함수(filter,map,reduce)

우주먼지의하루 2021. 3. 25. 00:02
728x90

Lambda 함수란

˙ 코드를 간결하게 만들기 위해 사용

˙ 단일문으로 표현되는 익명함수

˙ 익명함수란 이름이 없는 구현체만 존재하는 간단한 함수를 의미

˙ 코드상에서 한번만 사용되는 기능이 있을 때, 굳이 함수로 만들지 않고 1회성으로 만들어 쓸 때 사용

 

예제 1.

#x를 넣으면 x제곱이 나오는 함수를 만들어보자
a=lambda x:x**2
a(5)


#위의 lambda함수와 같은 함수
def a2(x):
	return x**2

예제 2.

#x,y 두 변수를 덧셈하는 함수
add = lambda x,y:x+y
add(1,2)



#위의 lambda 함수와 같은 함수
def add(x,y):
	return x+y

예제 3.

#문자 길이로 sorting 하기
ex = ['aaa','bbbbbbb','c','dddd']

string.sort(key=lambda s:len(s))


#위 lambda함수와 같은 함수
def str_len(s):
	return len(s)

 

Lambda와 유용하게 사용되는 3가지 함수(filter,map,reduce)

˙ filter : 특정 조건을 만족하는 요소만 남기고 필터링

˙ map : 각 원소를 주어진 수식에 따라 변형하여 새로운 리스트를 반환

˙ reduce : 차례대로 앞 2개의 원소를 가지고 연산. 연산의 결과가 또 다음 연산의 입력으로 진행됨. 따라서 마지막까지 진행되면 최종 출력은 한개의 값만 남기게 됨

 

 

예제1. filter 함수

nums = [1,2,5,6,8,9,0,1,3]

#짝수만 남기고 싶을 때
list(filter(lambda n:n%2==0,nums))

#위 lambda 함수와 같은 함수
def even(n):
    return n%2==0

 

예제2. map 함수

nums = [1,2,5,6,8,9,0,1,3]

#map함수 = 기존 리스트 + 새로운 리스트
list(map(lambda n:n**2, nums))

 

예제3. reduce 함수

import functools

a = [1,3,5,8]

# 리스트 내의 모든 숫자의 합
functools.reduce(lambda x,y:x+y,a)

 

 

반응형