为什么这个代码没有转换列表列表
import sys
t = input()
for k in range(t):
n,m = [int(i) for i in raw_input().strip().split()]
A = [[None]*m]*n
B = [[None]*n]*m
for l in range(n):
A[l] = raw_input().strip().split()
for j in range(m):
for i in range(n):
B[j][i] = A[i][j]
print B
我知道有更好的方法来转置矩阵,但为什么这不起作用?在
更换
与
^{pr2}$为什么?在
你能看到那里发生了什么吗? 内存中只有一个副本保存值“2”。所有列表元素都指向保存值“2”的同一内存位置。在
所以,当你这样做的时候:
您正在创建一个二维数组,其中的元素指向同一内存位置。更改其中一个,会更改存储在该公共内存位置的值,从而更改所有元素存储的值!
这就是为什么这个计划没有成功。在
详细阅读Python中所有这些操作的详细信息,请访问: http://foobarnbaz.com/2012/07/08/understanding-python-variables/
相关问题 更多 >
编程相关推荐