我的if语句上的条件变量被该语句更改,即使它没有出现在该语句中。为什么?

时间:2019-08-23 19:12:24

标签: python numpy atom-editor

我想创建两个矩阵。然后,根据第一矩阵中的数字更改第二矩阵号。因此,我生成了有关第一个矩阵的If语句,如果为true,这将导致第二个矩阵发生变化。但是,它会引起两个矩阵的变化吗?

我的代码与单个数字对象完美配合。仅当我尝试将其应用于矩阵时才会发生。

import numpy as np
n = 3
matr = np.zeros((n,n))
matr[0][0] = 1
matr2 = matr

print(matr)
[[1. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

print(matr2)
[[1. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

if matr[0][0] == 1:
    matr2[0][0] = 9

print(matr)
[[9. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

print(matr2)
[[9. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

因为在我的if语句中“ matr”没有作为主题出现,所以不应该对它进行更改吗?

x = 1
y = x

if x == 1:
    y = 9

print(x)
1
print(y)
9

1 个答案:

答案 0 :(得分:0)

那两个变量只是对同一矩阵的两个引用,而不是两个不同的矩阵; matr2 = matr只是创建了对同一矩阵的新引用。

语句matr2[0][0] = 9修改了示例中存在的唯一矩阵,它与使用matr[0][0] = 9完全相同。