Python '的算术平均值;i';元素

Python '的算术平均值;i';元素,python,python-2.7,Python,Python 2.7,代码应该从现有列表x创建一个新列表m 每个元素m[i]都应该是x中i元素的算术平均值,但我无法让它以任何方式工作 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”对象不可编辑 最简单、最有效的方法是分别保存输入列

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

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

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”对象不可编辑


最简单、最有效的方法是分别保存输入列表中元素的总和和计数。如果当前总和除以当前计数,则为算术平均值:

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

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

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=i+1
你不能这样修改循环索引。它会自动处理它
sum(x[i])
您正在尝试对一个数字求和。