Python—如果我没有';不要在里面改变它的价值?

Python—如果我没有';不要在里面改变它的价值?,python,loops,global,Python,Loops,Global,我想在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): # Fo

我想在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始终为真

我错过了什么


提前感谢

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)

你的副本作为参考
Wo
W
是同一内存的不同别名。你需要一份深入的副本是的Xeningem,我没有考虑参考资料。。。非常感谢你