파이썬(Python)/문법

파이썬 functools reduce 사용법

끄적끄적아무거나 2020. 12. 9. 11:55
반응형

 

간단히 코드를 통해 이해 해보자.

 

코드>>

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가 나온다. 이런식으로 누적값이 새로운 값과 함께 적용 된다.

 

반응형