【发布时间】:2014-05-10 22:17:21
【问题描述】:
我有一个矩阵样式的数组,它(假设)看起来像这样:
mat = [[0,2,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
imat = mat
for i in xrange(4):
for j in xrange(4):
imat[j][i] = mat[i][j]
for i in xrange(4):
for j in xrange(4):
imat[j][i] = mat[i][j]
代码基本上将行/列从“mat”切换到“imat”。
结果:
mat:
[[0, 2, 0, 0], [2, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
imat:
[[0, 2, 0, 0], [2, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
谁能告诉我为什么数组项会这样重复?
此外,如果有更有效的方法来执行此操作,那也将不胜感激。
【问题讨论】:
-
imat和mat都指向同一个对象。 -
imat = map(list, zip(*mat))是 IMO 最干净的方式。