Python

[Python] lambda 람다식 사용법 map, filter, reduce 함수

Let it out 2024. 4. 23. 23:00

파이썬에서 제공하는 lambda(람다식)을 사용하면 함수를 보기 좋게 바꿀 수 있다.

 

람다식은 문법이라서 굳이 import 같은 setting 안해줘도 된다.

 

또한 람다식과 함께 사용하면 좋은 map, filter, reduce 함수에 대해 알아보자.

 

 

기본적인 함수

sum 함수를 구현해주고 a + b 값을 return 받는 기본적인 함수 사용법이다.

def sum(a, b):
    return a + b

print(sum(1,2))

 

결과 

3

 

 


 

함수를 람다식으로 변경하기

위에 함수를 람다식으로 바꿔보자.

아래 예제 처럼 람다 함수를 한줄로 줄 일 수 있다.

lambda 식에 a,b 는 매개변수가 되고 a + b 가 return 값이 된다.

따라서 1 + 2 = 3이 출력된다.

sum = lambda a,b: a+b #lambda a,b가 매개변수, a + b가 return 값

print(sum(1,2))

 

결과

3

 

 


 

람다식 변형 해보기

이건 10 * 10 즉 2제곱 하는 바로 위에서 본 기본적인 람다식이다.

square = lambda x: x*x

print(square(10))

 

결과

100

 

 

 

이 예제는 람다식에 바로 매개변수를 지정하는 방식이다.

아래 예제처럼 (10) 을 적어주면 매개변수 x = 10 이 된다.

square = (lambda x: x*x)(10) # (10) <- 매개변수 x = 10 을 넣어준다.

print(square)

 

결과

100

 

 

 


 

map, filter, reduce 함수랑 함께 사용해보기

 

map 함수 사용

map은 람다식에  데이터를 매핑 시켜주는 함수다.

map 함수가 list_1의 요소를 하나 씩 순서대로 x 값에 매핑 시켜준다.

즉 1,2,3,4,5,6 이 순서대로 매개변수 x에 매핑 되고 x**2 인 2제곱 값이 출력된다.

map 함수를 사용하면 람다식을 마치 for문 처럼 사용가능하다.

list_1 = [1, 2, 3, 4, 5, 6]

result = list(map(lambda x: x**2, list_1))
print(result)

 

결과

[1, 4, 9, 16, 25, 36]

 

 

 

filter 함수 사용

filter 함수는 if 조건문처럼 조건에 맞는 값을 필터링 해준다.

예제를 보면 x % 2 = 1, 즉 x가 홀수인 값만 필터링 해준다.

list_1 = [1, 2, 3, 4, 5]

result = list(filter(lambda x: x % 2 == 1, list_1))
print(result)

 

결과

[1, 3, 5]

 

 

 

reduce 함수 사용

우선 functools 모듈의 reduce 함수를 import 해준다.

reduce 함수는 리스트 같은 요소들을 순차적으로 결합시켜준다.

말이 어려운데 예를 들어

처음에는 a, b에 1, 2 가 들어와 1 * 2 = 2가 되고

두 번째에는 a, b에 2, 3 이 들어와 6 가 되고

세번 째에는 a,b에 6, 4 가 들어와 24 이 되는 방식이다.

네번째에는 a,b 에 24, 5가 들어와 총 120이된다.

결국 1 x 2 x 3 x 4 x 5 값이 출력된다.

from functools import reduce

list_1 = [1, 2, 3, 4, 5]
result = reduce(lambda a, b: a * b, list_1)
print(result)

 

결과

120
반응형