Python矩阵:它不是更新元素而是更新所有行

时间:2016-04-02 17:16:28

标签: python list python-2.7 matrix

c_k_list = [[0, 0]]*(sorted_degrees[len(sorted_degrees)-1]+1)

c_k_list[entry[1]][0] = c_k_list[entry[1]][0]+1

其中entry[1]=1

在上面的语句中,不是向c_k_list中的特定元素添加1,而是向所有行添加1。 例如: c_k_list

[[1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0]]

而不是

[[0,0], [1,0], [0,0]......[0,0]]

1 个答案:

答案 0 :(得分:1)

列表是对象,因此通过引用存储。使用*只会创建该引用的副本。要更正此尝试:

c_k_list = [[0, 0] for i in range(5)] 
c_k_list[1][0] = c_k_list[1][0]+1