<分区>
我在 Python 中构建了一个二维向量,因为一开始我希望它全为零,并且不想使用 numpy,所以我尝试了这个:
columns = 8
rows = 5
m = [[0]* (columns)] * (rows)
m[3][2] = 1
print m
我得到了一个意想不到的行为:
>> [[0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0]]
它看起来像这样构建二维数组,使每一行成为对单个行的引用,因此如果写入其中任何一个,你就是在覆盖所有这些。
也许这对你们中的一些人来说听起来很明显,但我有点震惊。当然,我可以使用不同的方法修复它,但我很好奇为什么会这样。
谁能解释一下?如果您使用 [0] * size_of_array
构建一个简单数组,为什么这不会发生?