仅在一行中替换价值?

时间:2017-02-13 20:59:58

标签: python list indexing

我有两行的列表,我只想尝试替换一行中的一个变量,但它正在改变两行中的变量。以下是代码:

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 个答案:

答案 0 :(得分:0)

这是罪魁祸首:

twoRows = [rowOfZeros_4cols, rowOfZeros_4cols]

rowOfZeros_4cols的两个引用不是两个单独的列表。那是相同的对象,引用了两次。

如果更改它,看起来“两行”都已更改。相反,你总是改变同一行,只引用它两次。

每次都产生一个新行:

twoRows = [[0] * 4, [0] * 4]  # two independent lists of 4 zeros.