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

时间:2015-12-08 07:02:46

标签: python arrays list

我是python中的一个初学者。我试图在列表中添加一个数组,但是当我更新该数组并再次将其附加到列表时,之前附加的数组也会更新。为什么会发生?

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

输出i预期为[[1],[1,2]]但输出为[[1,2],[1,2]]。

3 个答案:

答案 0 :(得分:0)

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

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

因此,您最终会追加单个对象的两个实例,而不是裸值。可以使用list_of_sol.append(list(a))

实现预期的行为

答案 1 :(得分:0)

如果你想要你所说的你想要的输出,那就这样做:

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

答案 2 :(得分:0)

这可能是关于复制和深度复制: list_of_sol.append(一个)放一个list_of_sol的副本,而这个副本list_of_sol [0]用a引用同一个地方,你可以用id(list_of_sol [0])== id(a)测试一下 你可以查看:

acl test src 192.168.1.3
tcp_outgoing_address 10.43.19.239 test
http_access allow all
http_port 3128