Python - 如果我不更改循环内的值,为什么要更新循环内的备份变量?

Python - Why backup variable inside loop is being updated if I don't change it value inside?

我想在 Wo 中设置矩阵 W 的值。 然后,我将进入一个循环并与 W 进行操作。在循环结束时,我想将其恢复为 Wo​​,但我得到相反的结果,Wo 正在成为 Wo。

这怎么可能?我怎样才能完成我想要的?我也尝试过将 Wo 定义为全局但没有结果

W = np.random.rand(5, 10)
global Wo
Wo = W # Back up for the initial values of W

for k in range(0, K):

  for j in range(0, m):       # For every hidden node

    for i in range(0, n):        # For every connection

      # Operations (W get changed)
      W = Wo

然后,如果我检查 Wo 的值已被修改,Wo == W 始终为 True。

我错过了什么?

提前致谢

Python 中的所有项目都是参考,因此如果您更改一个参考,其他参考也会随之改变

l = []
global l_global
l_global = l

for i in range(1, 10):
  l.append(i)

print(l)
print(l_global)

现在对你的情况有意义吗?

要完成你想要的,你需要一个深拷贝。否则你只会创建对同一内存的引用。

import numpy as np
import copy as cp

W = np.random.rand(5, 10)
global Wo

Wo = cp.deepcopy(W) # Back up for the initial values of W

for k in range(0, K):

  for j in range(0, m):       # For every hidden node

    for i in range(0, n):        # For every connection

      # Operations (W get changed)
      W = cp.deepcopy(Wo)