作为一个列表的变量'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)
我可以做些什么来使其达到操作值保持不变的位置?
答案 0 :(得分:2)
newOP
不是operatoions
的副本。 newOp
是operations
的别名。这意味着当newOP
发生变化时,operations
也会发生变化。您需要明确告诉Python复制您的列表:
newOp = operations[:]
如果您的列表在嵌套深度不止一个级别,则使用切片表示法将失败。您必须改为使用copy.deepcopy
。