코딩테스트의 해설을 보던중 reduec , lambda를 적용하여 푸는 문제가 있어 기록

우선 .reduce ()
from functools import reduce
reduce(function, iterable, initializer=None)
reduce 함수는 위와 같은 파라미터를 받고 있고 , 첫번째 파라미터에 function() 함수가 들어가고 두번째 파라미터는 반복하고자 할 List [] 가 들어게 된다. initializer = None 은 초기값을 설정해 줄 수 있고 default 는 None으로 처리를 안해주면 초기값은 none 이다.
예제 코드
print(f'{reduce ( lambda x,y : x*y ,[1,2,3,4,5])}')

출력 결과

초기 값이 없다면 빈값부터 시작해서 끝까지 누적 lambda 식을 계산해서 return 한다.
만약 초기값에 0 을 넣었다면 , 연산은 0 * 1 로 시작 하게 된다.
예제코드( 초기값 )
print(f'{reduce ( lambda x,y : x*(y+1) ,[4,3,4],1)}')


출력결과
초기값을 1로 설정해 두었을때 reduece (lambda) 는 1부터 시작해서 계산을 해준다.
예제코드( 조건식 )
lst = [1 for _ in range(20)]
cmp = 99
lst.insert(5,100)
print(lst)
print(f'{reduce(lambda x,y : x if x > y else y ,lst,cmp)}')
간단하게 조건식을 세워서 리스트내에 초기값 cmp 와 비교값 lst 를 돌면서 최대값이 뭔지 출력하는 부분이다.

출력결과
lst = 20개의 리스트를 1로 채우고
cmp = 테스트 비교값
5번째 인덱스에 100을 넣고
reduce lambda 를 통해 초기값 cmp 와 lst 를 비교해 가면서 최대값이 뭔지 출력한다.
만약 cmp = 101 이면 출력값은 101이 나온다.
reduce lambda 에서 중요한점은 초기값과 누적값이라고 생각한다.
'Backjoon' 카테고리의 다른 글
| Backjoon - problem 2738 행렬 덧셈 파이썬 (0) | 2023.04.27 |
|---|---|
| Backjoon - problem 2566 최댓값 파이썬 (0) | 2023.04.27 |
| Backjoon - problem 2563 색종이 파이썬 (0) | 2023.04.27 |
| 요세푸스 순열 - python (0) | 2023.02.15 |
| python - 순열,조합 (itertools , math ) 함수 활용 (0) | 2023.02.07 |