파이썬에서 제공하는 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
'Python' 카테고리의 다른 글
[Python] 파이썬 스택 구현 예제(queue LifoQueue) (0) | 2024.05.07 |
---|---|
[Python] 파이썬 자료형 알아내는 함수 type() (0) | 2024.05.07 |
[Python] 파이썬 matplotlib 원그래프, 파이차트 그리기, 파이차트 분리 시키기 (0) | 2024.04.20 |
[Python] 파이썬 Tkinter 화면 탐색기 생성, 다이얼로그 (0) | 2024.04.19 |
[Python] 파이썬 csv 파일 읽어오기, 행으로 읽기, 열로 읽기 (1) | 2024.04.18 |