3

我想追加到 list1,另一个 list2,所以修改 list2 和另一个时间追加到 list1,但 list1 的值被覆盖。

我使用[:]了附加并且工作正常:

list1=[1,2]
list2=[]

list2.append(list1[:])

list1[0]=20

print list1, list2 # [20, 2] [[1, 2]]

但问题是当列表中有另一个列表时

list1=[[2,1],[2]] 
list2=[]

list2.append(list1[:])

print list1, list2  #[[2, 1], [2]] [[[2, 1], [2]]]

list1[0][0]=25

list2.append(list1)

print list1, list2  #[[25, 1], [2]] [[[**25**, 1], [2]], [[25, 1], [2]]]

我想成为最后的印刷品[[25, 1], [2]] [[[2, 1], [2]], [[25, 1], [2]]]

4

2 回答 2

3

我想你要问的是:

from copy import deepcopy
list1.append(deepcopy(list2))
于 2012-11-23T12:24:44.820 回答
0

我建议您创建一个与list1指向的列表内容完全相同的新对象,并使listT1指向该副本。这样,如果您修改list1(或list1指向的内容),listT1(或listT1指向的内容)将保持不变。例如 :

>>> list1=[[2,1],[2]]
>>> list2=[]
>>> lisT1 = [[2,1],[2]]
>>> list2.append(lisT1[:])
>>> print (list1, list2)
[[2, 1], [2]] [[[2, 1], [2]]]
>>> list1[0][0]=25
>>> list2.append(list1)
>>> print (list1, list2)
[[25, 1], [2]] [[[2, 1], [2]], [[25, 1], [2]]]
于 2012-11-23T16:31:49.373 回答