#--------------------------
def test( inputlist ):
A,B = inputlist,inputlist
print A
print B
print "----"
A[0] += 5
print A
print B
test( [5.0 , 6.1] )
#--------------------------
我想要的输出结果是
[5.0, 6.1]
[5.0, 6.1]
----
[10.0, 6.1]
[5.0, 6.1]
实际输出结果为
[5.0, 6.1]
[5.0, 6.1]
----
[10.0, 6.1]
[10.0, 6.1]
为什么两个变量一起变了?怎么办?那么该怎么写?
代码及运行结果如图:
从你的问题来看是一个新手,建议直接放弃2.x版本学习3.x版本。对现在的你来说用到的2与3版本之间的差异可能也就是print(如图中所示与你代码的差异),影响很小。
代码解释:
你的代码中用A,B = inputlist,inputlist进行赋值,实际A与B都是指向了同一个内存对象,所以对其中任意一个做出修改,即修改了内存中的这个对象,造成A与B同时修改。解决方法,引入copy模块中的deepcopy()函数,保证A与B指向长的一样但在内存中是两个对象,这样对其中一个修改时完全不影响到另一个。