2016-04-02 6 views
0
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матрица Python: вместо обновления элемента, он обновляет все строки

В приведенном выше заявлении, вместо добавления 1 к конкретному элементу в c_k_list, он добавляет 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

Списки являются объектами, и поэтому они хранятся в виде ссылки. Использование * будет просто создавать копии этой ссылки. Для устранения этой проблемы:

c_k_list = [[0, 0] for i in range(5)] 
c_k_list[1][0] = c_k_list[1][0]+1 
Смежные вопросы