如何在保持引用原始Python的同时更改列表的顺序

我正在创建一个数独求解器,为了便于访问,我希望有多个引用相同元素的列表。 我创建了一个称为网格的嵌套列表,然后使用名为行的列表对其进行了引用。更改行将更改网格。现在,我想创建另一个列表,该列表还将“与行和网格一起动态更新”,但是具有不同的嵌套结构(cols [i] [j] = grid [j] [i])

rows = grid
cols = [[rows[i][j] for i in range(9)] for j in range(9)]
blocks = [[rows[l//3*3+k//3][l % 3*3+k % 3]
           for k in range(9)] for l in range(9)]
rows[0][0] = [10] 
cols[1][1] = [5]

grid [0] [0]将为[10],但现在我希望cols,blocks [0] [0]也为[10],并且grid,cols,blocks,rows [1] [1]是[5]无效。为什么列表中的元素不是:cols和block引用了列表中的行和网格的元素?

abc5601335 回答:如何在保持引用原始Python的同时更改列表的顺序

使用切片分配,以便您就地更新列表,而不是创建对新列表的引用。

rows[0][0][:] = [10]
cols[1][1][:] = [5]
本文链接:https://www.f2er.com/3089742.html

大家都在问