我有两行的列表,我只想尝试替换一行中的一个变量,但它正在改变两行中的变量。以下是代码:
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]]
我做错了什么?这似乎应该是非常直接的。
提前致谢, 埃里克
答案 0 :(得分:0)
这是罪魁祸首:
twoRows = [rowOfZeros_4cols, rowOfZeros_4cols]
对rowOfZeros_4cols
的两个引用不是两个单独的列表。那是相同的对象,引用了两次。
如果更改它,看起来“两行”都已更改。相反,你总是改变同一行,只引用它两次。
每次都产生一个新行:
twoRows = [[0] * 4, [0] * 4] # two independent lists of 4 zeros.