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]]。
答案 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