连续计算平均值?

Continuous calculation of the mean of values?

一段时间内,我的申请中出现了一系列数字,例如:[10, 8, 11, 9, 10, 8, 8, 11, 9, 8, 10, 11]

我知道我可以用 statistics.mean(x) 计算这些值的平均值,但这需要我存储我得到的所有值。

现在的问题是:有没有一种方法可以在每次获得新值时计算所有值的平均值,而无需存储每个值?

应该是这样的:

新值:10 -> 平均值:10

新值:8 -> 平均值:9

新值:11 -> 平均值:9,6

等...

编辑:我可能可以将所有值相加并计算我得到了多少个值。

是的,只保留目前的总和和数字个数

def init_running_average():
    int total = 0
    int count = 0

    def add_number(x):
        nonlocal total, count

        count += 1
        total += x

        return total/count
    return add_number

avg = init_running_average()
print(avg(10)) # 10
print(avg(8)) # 9