Sph*_*ner 5 python variables reference deep-copy python-2.7
要理解为什么我在程序中遇到错误,我试图找到一个决定因素的"次要",我写了一个更简单的程序,因为我的变量搞砸了.下面这个函数接受一个2*2矩阵作为输入,并返回一个包含其行的列表(毫无意义和低效,我知道,但我正在试图理解这背后的理论).
def alpha(A): #where A will be a 2 * 2 matrix
B = A #the only purpose of B is to store the initial value of A, to retrieve it later
mylist = []
for i in range(2):
for j in range(2):
del A[i][j]
array.append(A)
A = B
return mylist
Run Code Online (Sandbox Code Playgroud)
但是,在这里似乎B被动态赋值为A ,因为我无法将B的初始值存储在B中以便以后使用它.这是为什么?
Nik*_*ido 10
因为python通过引用传递列表这意味着当你写"b = a"时你说a和b是同一个对象,而当你改变b时你也改变了a,反之亦然
按值复制列表的方法:
new_list = old_list[:]
Run Code Online (Sandbox Code Playgroud)
如果列表包含对象并且您也想要复制它们,请使用通用copy.deepcopy():
import copy
new_list = copy.deepcopy(old_list)
Run Code Online (Sandbox Code Playgroud)