Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数组添加到数组中而不影响数组中的元素_Python_Arrays_List - Fatal编程技术网

Python 将数组添加到数组中而不影响数组中的元素

Python 将数组添加到数组中而不影响数组中的元素,python,arrays,list,Python,Arrays,List,Iam是python中的beginer。Iam试图在列表中添加数组,但当我更新该数组并再次将其附加到列表时,先前附加的数组也会更新。为什么会发生这种情况 list_of_sol=[] a=[] a.append(1) list_of_sol.append(a) a.append(2) list_of_sol.append(a) print list_of_sol 我期望的输出是[[1],[1,2]],但输出是[[1,2],[1,2]]。您正在将引用附加到列表对象a。 这可以通过列表中两个元素的

Iam是python中的beginer。Iam试图在列表中添加数组,但当我更新该数组并再次将其附加到列表时,先前附加的数组也会更新。为什么会发生这种情况

list_of_sol=[]
a=[]
a.append(1)
list_of_sol.append(a)
a.append(2)
list_of_sol.append(a)
print list_of_sol

我期望的输出是[[1],[1,2]],但输出是[[1,2],[1,2]]。

您正在将引用附加到列表对象
a
。 这可以通过列表中两个元素的
id()
进行验证

>>> id(list_of_sol[1])
# 140477592091464
>>> id(list_of_sol[0])
# 140477592091464

因此,最终会附加单个对象的两个实例,而不是纯值。可以使用
list\u of_sol.append(list(a))

实现预期行为如果您想要您所说的预期输出,请按以下方式操作:

list_of_sol=[]
a=[]
a.append(1)
list_of_sol.append(a[:])
a.append(2)
list_of_sol.append(a)
print list_of_sol

这可能与复制和深度复制有关: 附加(a)将a的副本放在a的列表中,并且此副本列表[0]与a引用在同一位置,您可以使用id(列表[0])==id(a)测试它 您可以检查以下内容:

from copy import deepcopy

list_of_sol=[]
a=[]
a.append(1)
list_of_sol.append(deepcopy(a[:])) #here changed
a.append(2)
list_of_sol.append(deepcopy(a)) #here changed
print list_of_sol