问题描述
我有两行的列表,只是想替换一行中的一个变量,但是它正在更改两行中的变量。 下面是代码:
rowOfZeros_4cols = []
for i in range(0,4):
rowOfZeros_4cols.append(0.)
twoRows = [rowOfZeros_4cols, rowOfZeros_4cols]
mat_Zeros = twoRows
mat_Zeros[0][2] = 1.
输出如下:
[[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, 0.0, 0.0]]
我究竟做错了什么? 这似乎应该很简单。
预先感谢,埃里克
1楼
这是罪魁祸首:
twoRows = [rowOfZeros_4cols, rowOfZeros_4cols]
对rowOfZeros_4cols
的两个引用不是两个单独的列表。
那是同一个对象 ,被引用两次。
如果您更改它,则看起来“两行”都已更改。 相反,您总是在更改同一行,只引用了两次。
每次都产生新的一行:
twoRows = [[0] * 4, [0] * 4] # two independent lists of 4 zeros.