临时数组在循环中覆盖原始数组

temp array overwriting original array in loop

我有一个临时数组,这样原始数组就不会在每次循环中被覆盖。我知道这不是它实际在做什么,但我没有其他解释...

e = .95
f = .95
g = .95
h = .95

for a in range(0,10):
    e = e + .01
    for b in range(0,10):
        f = f + .01
        for c in range(0,10):
            g = g + .01
            for d in range(0,10):
                h = h + .01
                adj = []
                temp2 = original
                for x in temp2:
                    print x
                    x[0] = x[0] * e
                    x[4] = x[4] * e
                    x[1] = x[1] * f
                    x[5] = x[5] * f
                    x[2] = x[2] * g
                    x[6] = x[6] * g
                    x[3] = x[3] * h
                    x[7] = x[7] * h
                    x[8] = x[8] * e
                    x[12] = x[12] * e
                    x[9] = x[9] * f
                    x[13] = x[13] * f
                    x[10] = x[10] * g
                    x[14] = x[14] * g
                    x[11] = x[11] * h
                    x[15] = x[15] * h
                    adj.append(sum(x))

当我打印 x 时,它正在增加,就好像它不是临时变量一样。

temp2不是一个单独的数组,它是对同一个数组的引用。您可能想将 x 复制到 temp2。一种方法是使用以下代码行:

import copy
temp2 = copy.deepcopy(original)

这假设这就是您遇到的问题。从您的描述和代码中,还不太清楚到底是什么未按预期运行。

临时数组不是单独的数组。 我想通过先将临时数组创建为空数组然后将原始数组的内容添加到其中来解决此问题。

可以这样做:

original = ["apple", "banana", "orange"]   
tempArray = []
tempArray += original

现在“tempArray”将具有原始数组的内容,但不会覆盖“原始”。