【发布时间】:2014-01-10 04:20:05
【问题描述】:
我有这个 7x7 的二维数组:
l=[[1, 1, 1, 1, 1, 1, 1],
[1, 0, 2, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1]]
如您所见,l[1][2]=2。当我打印它时,该元素被正确打印。这里没问题。但是当我尝试将它从“2”更改为“3”或任何其他数字时,程序会更改该列(在本例中为第 3 列)上的所有元素,但第一个和最后一个元素除外。例如,如果我输入以下代码:
l[1][2]=5
然后打印二维数组,我得到了:
l=[[1, 1, 1, 1, 1, 1, 1],
[1, 0, 5, 0, 0, 0, 1],
[1, 0, 5, 0, 0, 0, 1],
[1, 0, 5, 0, 0, 0, 1],
[1, 0, 5, 0, 0, 0, 1],
[1, 0, 5, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1]]
我选择的每个元素都会发生这种情况。它不仅更改了该元素,还更改了整个列。 有谁知道可能是什么问题?谢谢!
【问题讨论】:
-
我无法复制它。你能在python解释器中自己运行所有这些吗?你用的是哪个python?
-
这毫无意义,即使你有一个 NumPy 矩阵或对同一个列表的多个引用。您能给我们看一个实际的口译会话吗?
-
你能告诉我们你是如何实际构建开始列表的吗?我假设您不小心存储了对同一个列表的多个引用。
-
@mgilson:可能,但这仍然不会产生所示的输出。这可能是因为显示的输出不是 OP 实际得到的。
-
@user2357112 -- 是的,我非常怀疑输出是 OP 实际得到的。如果不是第一行,列表的构造可能类似于
l = [a, b, b, b, b, b, c]...