python中空矩阵赋值复数

Python09

python中空矩阵赋值复数,第1张

问题出在 C=[[0]*n]*m 假若n=2 m=2 C=[[0,0],[0,0]] 用id函数查看C[0]和C[1]的id值是一样的。在内存中享有共同的区域,导致 列黏在一起。 列表* m的方式起始应该属于浅复制,得到的列表 在内存中占同一空间,即id值 一样。你可以看一下浅复制和深复制 把 C=[[0]*n]*m 改为 empty_like(A) 就可以啦

matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]

# 矩阵转置

# 矩阵的列数

colomn = len(matrix[0])

# 转置矩阵的行数,设置空矩阵[[], [], [], []]

transformMatrix = [[] for i in range(colomn)]

for ele in matrix:

for i in range(colomn):

# transformMatrix[i]标识新矩阵的第i行

# ele[i]标识原有矩阵的第i列

transformMatrix[i].append(ele[i])

print transformMatrix