2017-10-16 65 views
1

我想在下面的函數中計算名爲'temp_data'的列表的移動平均值。移動平均數據應存儲在名爲'移動平均'的列表中。下面的代碼工作的意思是列表'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) 

回答

0

您分配一個新的列表temp_mov這裏:temp_mov

cumsum, temp_mov = [0], [] 

因此,moving_average沒有更新的變化。

make_moving(temp_data, moving_average)更改爲moving_average = make_moving(temp_data)並刪除temp_mov參數將解決該問題。