'i'元素的算术平均值

时间:2016-01-14 17:17:55

标签: python python-2.7

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

每个元素m[i]应该是ix元素的算术平均值,但我无法以任何方式使其工作。

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'对象不可迭代

似乎阻止它工作。

2 个答案:

答案 0 :(得分:0)

最简单和最有效的方法是单独保留输入列表的元素和元素的数量。然后算术平均值只是当前总和除以当前计数:

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

答案 1 :(得分:0)

根据您的代码,您可以尝试:

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)