如何制作计算列表移动平均值的函数?

时间:2017-10-16 18:04:48

标签: python list function enumerate

我正在尝试计算名为' temp_data'的列表的移动平均值。在下面的功能中。移动平均数据应存储在名为“moving_average”的列表中。以下代码的工作原理是列表' temp_mov'在函数内部(第12行)打印,但在稍后调用函数时(在代码的最后一行)不打印。在那种情况下,我得到一个空列表。我犯了什么错误?

   # calculate moving average of a list of weather data

    def make_moving(temps, temp_mov):
            ''' Create moving average from list weather data'''

            cumsum, temp_mov = [0], []
            for i, x in enumerate(temps, 1):
                    cumsum.append(cumsum[i-1] + x)
                    if i>=N:
                          moving_ave = round((cumsum[i] - cumsum[i-N])/N, 1)
                          temp_mov.append(moving_ave)
            print(temp_mov) 
            return temp_mov

  make_moving(temp_data, moving_average)
  print(moving_average)

1 个答案:

答案 0 :(得分:0)

您在此处为temp_mov分配了一个新列表:

cumsum, temp_mov = [0], []

因此,moving_average更改后temp_mov不会更新。

make_moving(temp_data, moving_average)更改为moving_average = make_moving(temp_data)并删除temp_mov参数可以解决问题。