Python accumulate() 计算汇总值使用方法
前言
accumulate
是 Python 内置的一个函数,它可以对一个可迭代的对象进行累加操作,返回一个同样长度的累加结果对象。常常用在计算汇总值、移动平均等中。
语法
accumulate(iterable[, func])
,其中:
iterable
:可以是列表、元组、迭代器等可迭代对象。func
:(可选参数)二元操作函数,用来对累加操作进行自定义,如果不指定,则默认为operator.add()
,即计算累加和。
其中 func
函数接收一个两个参数的二元组,表示当前操作的累加值和迭代对象中当前元素的值,返回值是这两个值的二元组的计算结果。如果 func
函数未指定,则默认为 operator.add()
。
示例1:计算列表中数值的累加和
from itertools import accumulate
a = [1, 2, 3, 4, 5]
# 计算累加和
b = list(accumulate(a))
print(b) # [1, 3, 6, 10, 15]
上面的代码中,首先创建一个包含 1 到 5 的列表 a
,然后通过 accumulate
函数计算了它的累加和,结果存储在 b
中,最后通过 print
函数输出了结果 [1, 3, 6, 10, 15]
。
示例2:计算列表中元素的移动平均值
from itertools import accumulate
# 定义一个元素加权平均值的二元操作函数
def weighted_average(x, y):
return x * 0.5 + y * 0.5
a = [10, 20, 30, 40, 50]
# 计算移动平均值
b = list(accumulate(a, weighted_average))
print(b) # [10.0, 15.0, 25.0, 35.0, 45.0]
上述代码中,我们定义了一个自定义的加权平均值函数 weighted_average
,它接收两个参数 x
和 y
,并将它们加权平均后返回。然后创建一个包含 10 到 50 的列表 a
,并通过 accumulate
函数计算它的移动平均值,结果存储在 b
中,最后通过 print
函数输出了结果 [10.0, 15.0, 25.0, 35.0, 45.0]
。
结论
accumulate
函数是 Python 内置的一个非常方便的累加函数,通过它可以很方便地对可迭代对象进行累加计算。同时,可以通过自定义操作函数将 accumulate
用于更加复杂的计算过程中。