2016-02-12 104 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]] 
相关问题