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

How to change the order of a list while keeping reference to the original Python

我正在创建一个数独求解器,为了便于访问,我想要多个引用相同元素的列表。 我创建了一个名为 grid 的嵌套列表,然后用一个名为 rows 的列表引用它。更改行将更改网格。现在我想创建另一个列表,它也将 "dynamically update together with rows and grid" 但具有不同的嵌套结构 (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 和 blocks 对列表行和网格元素的引用?

使用切片赋值,这样您就可以更新列表,而不是创建对新列表的引用。

rows[0][0][:] = [10]
cols[1][1][:] = [5]