반응형
def reduce(function, sequence, initial=_initial_missing):
"""
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.
"""
it = iter(sequence)
if initial is _initial_missing:
try:
value = next(it)
except StopIteration:
raise TypeError("reduce() of empty sequence with no initial value") from None
else:
value = initial
for element in it:
value = function(value, element)
return value
functools의 reduce 함수입니다. 매개변수로는 function, sequence, initial을 가집니다. sequence의 데이터들을 초기값에 function으로 처리해서 값을 돌려주는 것으로 다음과 같이 사용할 수 있습니다.
예시
>>> from functools import reduce
>>> reduce(lambda a, b: a * b, [1, 2, 3, 4, 5])
120
이 코드를 예로 들면 람다식을 중첩해서 연산하는 것으로 간단히 설명하자면 다음과 같습니다.
(((1 * 2) * 3) * 4) * 5)
람다식 대신 sum 함수를 넣으면 이렇게 됩니다.
initial의 역할
initial의 역할은 중첩해서 연산할 때 맨 앞에 초기값을 넣을지에 대한 것입니다.
위의 코드는 초기값을 10으로 설정한 것으로, 간단히 설명하자면 다음과 같습니다.
((((10 * 1) * 2) * 3) * 4) * 5)
기존 코드에는 초기값이 없어 1*2를 바로 수행했지만, 여기서는 10을 초기값으로 설정하여 연산하므로 10*1부터 연산을 수행합니다. 이를 이용하면 데이터에서 값을 하나씩 꺼내서 처리하는 연산을 할 때 좀 더 간단하게 코드를 짤 수 있습니다.
반응형
'Python' 카테고리의 다른 글
Python - sys.stdin.readline() 개행 문자 처리 (0) | 2021.08.02 |
---|