当前位置: 代码迷 >> python >> 仅在一行中替换值?
  详细解决方案

仅在一行中替换值?

热度:100   发布时间:2023-06-13 16:46:54.0

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

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]] 

我究竟做错了什么? 这似乎应该很简单。

预先感谢,埃里克

这是罪魁祸首:

twoRows = [rowOfZeros_4cols, rowOfZeros_4cols]

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

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

每次都产生新的一行:

twoRows = [[0] * 4, [0] * 4]  # two independent lists of 4 zeros.
  相关解决方案