【问题标题】:Arithmetic mean for 'i' elements [duplicate]“i”元素的算术平均值[重复]
【发布时间】: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]) 你正在尝试对一个数字求和。

标签: python python-2.7


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2018-02-18
      • 2019-10-17
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多