如果我有这个矩阵,例如:
matrix = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
我想把它放在第二个对角线上,而不碰第一行和第一列。它看起来像这样:
^{pr2}$这是我尝试过的,但它不会改变矩阵:
for i in range(1, 4):
for j in range(1, 4):
temp = copy.deepcopy(matrix[i][j])
matrix[i][j] = matrix[4-j][4-i]
matrix[4-j][4-i] = temp
您的代码无法工作,因为您要交换两次项目:将}同时使用}在{}中交换意味着交换:
matrix[i][j]
与{i
和{[1][1]
带[3][3]
[1][2]
带[3][2]
[3][2]
和{[3][3]
和{你可以清楚地看到,你交换每一个项目两次,这使你回到原来的矩阵。要解决这个问题,只需使用
range(1, 3)
。在另外,您可以内联交换值,不需要使用
copy
和临时变量。下面是一个有效的例子:考虑将
list
转换为类似数组的对象,例如np.matrix
,以利用标准的2D操作。例如:你的代码不能工作,因为你要交换两次每对变量,再次构建同一个矩阵。在
另外,您不需要对整数矩阵进行
copy.deepcopy
调用,并且引用了一个未定义的table
变量相关问题 更多 >
编程相关推荐