尽管没有明确的更改,列表变量的值仍在变化

时间:2016-11-16 20:16:01

标签: python arrays list for-loop

作为一个列表的变量'operations'在运行for循环后正在改变,尽管它们没有明确表示要改变其值的行。这是我的代码:

validOperations = ['(', ')', '^', '*', '/', '+', '-']
operations = ['+', '*', '/']
newOp = operations  

for y in range(len(newOp) - 1):
        for z in range(len(newOp) - 1):
                if(validOperations.index(newOp[z]) > validOperations.index(newOp[z+1])):
                        oldVal = newOp[z]
                        newOp[z] = newOp[z+1]
                        newOp[z+1] = newOp[z]
                        print(newOp)
                        print(operations)

我可以做些什么来使其达到操作值保持不变的位置?

1 个答案:

答案 0 :(得分:2)

newOP不是operatoions的副本。 newOpoperations的别名。这意味着当newOP发生变化时,operations也会发生变化。您需要明确告诉Python复制您的列表:

newOp = operations[:]

如果您的列表在嵌套深度不止一个级别,则使用切片表示法将失败。您必须改为使用copy.deepcopy