将列表存储到另一个列表中

时间:2016-02-12 12:20:00

标签: python python-3.x for-loop

我试图将不同的平均列表保存到名为的列表中 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的情况下避免这个问题,但我不想滥用这么多的导入改进我的编程。

1 个答案:

答案 0 :(得分:1)

这是因为使用您的方法可以多次添加指向列表的指针。 您必须每次复制元素,例如list(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]]