【发布时间】:2013-05-05 18:49:24
【问题描述】:
我正在用 Python (2.5.4) 编写一个程序,我意识到我的代码因为一些非常不寻常的事情而无法正常工作。我举个例子:
A = [[0]*2]*2
当我打印 A 时,我得到:
[[0, 0], [0, 0]]
没关系。但现在我想更改第一列和第一行中的元素。所以我输入:
A[0][0] = 1
但是当我再次打印 A 时,我得到:
[[1, 0], [1, 0]]
但是,我期待
[[1, 0], [0, 0]]
这毁了我所有的代码。我想知道为什么会发生这种情况以及如何解决。
另一方面,当我输入:
B = [[0,0],[0,0]]
然后制作:
B[0][0] = 1
我明白了:
[[1, 0], [0, 0]]
这更奇怪了!实现矩阵的两种方式不是等效的吗?如果我想要一个带零的 100x100 矩阵怎么办?对于这种情况,使用 2x2 矩阵,我可以输入 [[0, 0], [0, 0]]。但这不是一个好的解决方案。
【问题讨论】:
-
更一般地说,使用 numpy (numpy.org) 进行数值计算,而不是自己滚动。
标签: python