我对Python很新,但很快掌握了大多数概念。
我编写了以下函数来获取数组的返回数字:
def getret(X):
if X:
A = X
B = X
print(A)
print(B)
A.insert(0, 0)
print(A)
B.insert(len(X), 0)
print(B)
Z = []
for i in range(len(A)):
Z.append(B[i]-A[i])
print(Z)
return Z
return False
我遇到的问题是我想要完全独立地处理变量A和B,但看起来它们是链接的,因为它们都引用变量X.
当我将此函数提供给数组[1,3,2,5,4]时,结果输出如下:
[1,3,2,5,4] # print A = X
[1,3,2,5,4] # print B = X
[0,1,3,2,5,4] # print A.insert(0, 0)
[0,1,3,2,5,4,0] # print B.insert(len(X), 0)
[0,0,0,0,0,0,0] # print list B - A
当我修改A和B时,我实际上改变了他们的参考X而不是单独存储的变量。
在JavaScript中,我可以通过将A和B设置为X的局部变量来轻松排序此问题,但我无法在Python中找到这样一个简洁的替代方案。
我正在使用PyCharm和Python 3.4。
答案 0 :(得分:4)
如果您想要一个独立的列表,则无需复制X
:
A = X[:]
如果列表中的元素比数字更复杂(在您的示例中不是这种情况),则甚至是深层副本:
from copy import deepcopy
A = deepcopy(X)
否则你只是获得对同一列表的新引用。