我初始化了3列2行的矩阵
┌ ┐
| 0 0 0 |
| 0 0 0 |
└ ┘
由matrix = [[0] * 3] * 2
产生,输出[[0, 0, 0], [0, 0, 0]]
。
然后我想在第一行的每个元素中添加1,如下所示:
┌ ┐
| 1 1 1 |
| 0 0 0 |
└ ┘
如果我使用
for i in range(3):
matrix[0][i] += 1
它输出[[1, 1, 1], [1, 1, 1]]
,其中每一行都受影响:
┌ ┐
| 1 1 1 |
| 1 1 1 |
└ ┘
但是,如果我改用matrix[0] = [x+1 for x in matrix[0]]
,则结果[[1, 1, 1], [0, 0, 0]]
看起来很正常。
为什么会这样?有什么方法可以分离每行,还是我必须使用numpy
?