“i”元素的算术平均值[重复]

Posted

技术标签:

【中文标题】“i”元素的算术平均值[重复]【英文标题】:Arithmetic mean for 'i' elements [duplicate] 【发布时间】:2016-04-20 03:22:55 【问题描述】:

代码应该从现有列表x 创建一个新列表m

m[i] 中的每个元素都应该是xi 元素的算术平均值,但我无法让它以任何方式工作。

def mari(x):
   m = []
   i = 0
   for i in range(1,len(x)):
       m[i]=((sum(x[i])/i+1))
       i = i+1
   return m
x = [1, 2, 3, 4, 5]
print mari(x)

TypeError: 'int' 对象不可迭代

是什么似乎阻止它工作。

【问题讨论】:

好吧,一方面,i = i+1 你不会像那样修改循环索引。它会自动处理它。 sum(x[i]) 你正在尝试对一个数字求和。 【参考方案1】:

最简单和最有效的方法是将输入列表的元素的总和和计数分开保存。然后算术平均值如果只是当前总和除以当前计数:

def mari(x):
    s = 0.0 # current sum
    cnt = 0 # current count
    m = [] # list to return
    for i in x:
        s += i
        cnt += 1
        m.append(s / cnt)
    return m

【讨论】:

【参考方案2】:

根据你的代码,你可以试试这个:

def mari(x):
   m = []
   m.append(x[0])
   for i in range(1,len(x)):
           m.append((sum(x[0:i+1]))/(i+1))
   return m

x = [1, 2, 3, 4, 5]
print mari(x)

【讨论】:

以上是关于“i”元素的算术平均值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 常用数据处理命令

算法折半查找的相关问题

Numpynumpy.mean() 的用法

c++运行结果为啥出现NAN

matlab上有滑动平均的函数吗?

平均指标包括