Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中转换列表列表_Python_Matrix_Transpose - Fatal编程技术网

在python中转换列表列表

在python中转换列表列表,python,matrix,transpose,Python,Matrix,Transpose,为什么这段代码不转换列表的列表 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(

为什么这段代码不转换列表的列表

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
我知道有更好的方法来转换矩阵,但为什么这不起作用?

替换

A = [[None]*m]*n
B = [[None]*n]*m

为什么?

你能看到那里发生了什么吗? 内存中只有一个副本包含值“2”。所有列表元素都指向保存值“2”的同一内存位置

因此,当您这样做时:

A = [[None]*m]*n
您正在创建一个二维数组,其中的元素指向同一内存位置更改其中一个,将更改存储在该公共内存位置的值,从而更改所有元素存储的值

这就是为什么这个计划不起作用

请在此处详细阅读Python中所有这些功能的工作原理:

是否可能重复?
>>> l = [2]*5
>>> l
[2,2,2,2,2]
>>> [id(value) for value in l]
[26089400, 26089400, 26089400, 26089400, 26089400]
A = [[None]*m]*n