간단히 코드를 통해 이해 해보자.
코드>>
import functools
a_var = [1,2,3,4,5,6,7]
print(functools.reduce(lambda x, y: 10 * x + y, a_var, 0))
결과>>
1234567
주석>>
위 코드는 리스트에 숫자를 꺼내서 정수형태로 합치는 코드이다.
우선 functools의 reduce 함수는 인자를 하나씩 꺼내어 표현식에 누적해서 넣는 방식이다.
함수 설명 부분을 visual studio에서 가져왔다.
def reduce(function, sequence, initial=None)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty.
여기서 function에 lambda 함수가 들어갔다. x,y 값을 10*x + y로 출력한다.
sequence 는 list a_var 들어 간다. 원래 initial이 없으면 a_var에 1,2가 x,y에 들어가는데 initial이 있어서 0(initial), 1이 들어가고 결과는 1이다. 다음으로 a_var에서 2가 y에 들어가고 x에는 앞의 결과 1이 들어가서 새로운 결과 12가 나온다. 이런식으로 누적값이 새로운 값과 함께 적용 된다.
'파이썬(Python) > 문법' 카테고리의 다른 글
파이썬 함수안에 함수, 중첩함수 (0) | 2020.12.11 |
---|---|
파이썬 zip함수, 별표(*) (0) | 2020.12.10 |
파이썬 deque 사용하는 이유 / popleft (4) | 2020.12.08 |
linked list / 연결리스트 란? 파이썬 (0) | 2020.12.07 |
파이썬 typing모듈 왜 사용하나? , mypy 검사 (0) | 2020.12.07 |