2016-02-12 105 views
-1

我想在保存平均的不同列表的使用下面的代碼名爲 storage_risk_prem列表:存儲列表到另一個列表

storage_risk_prem=list(range(len(simul_data))) 
    avg_risk_prem=list(range(len(simul_data[0]))) 
    for i in range(len(simul_data)): 
     for j in range(len(avg_risk_prem)): 
      avg_risk_prem[j]=np.average(simul_data[i][j]) 
     ***storage_risk_prem[i]=avg_risk_prem*** 

    storage=list(range(len(simul_data))) 
    w_mean_i=list(range(len(simul_data))) 
    w_std_i=list(range(len(simul_data))) 
    for i in range(len(w_mean_i)): 
     w_mean_i[i]=w.dot(storage_risk_prem[i]) 
     w_std_i[i]=np.sqrt(w.dot(cal_vcov_sim(simul_data)[i].dot(w))) 
     storage[i]=(w_mean_i[i],w_std_i[i]) 
    return storage 

,當我檢查了但是,僅存儲平均值相同的列表結果(std位很好)。

因此,通過我的代碼,發現斜體的行導致了這個問題,但我不知道如何避免這個問題,而不使用np.vstack,但我不想濫用這麼多的進口來改善我的編程。

+0

,你當然應該在循環中創建它。現在你明確地將它們全部設置到同一個列表中。 – unwind

+1

您不能在代碼塊中使用斜體。 –

+0

'造成了問題'什麼問題,也是'simul_data'的內容是什麼 – danidee

回答

1

這是因爲用你的方法你多次添加一個指向你的列表的指針。 你如果你想爲每個`i`一個新的`avg_risk_prem`列表中的每一次複製的元素,例如用列表(my_list)

a=[1,2,3] 
b=[list(a), list(a)] 
b 
=> [[1, 2, 3], [1, 2, 3]] 

a[0] = 10 
b 
=> [[1, 2, 3], [1, 2, 3]] 
相關問題