如何在Python中克隆或复制列表?
在Python中,赋值操作符并不创建一个新的对象,而是给已经存在的对象取了一个别名。可以通过id()函数来验证这一点。
>>> L1 = [1,2,3,4]
>>> L2 = L1
>>> id(L1)
185117137928
>>> id(L2)
185117137928
为了真正地复制一个列表,可以使用以下方法。
切片操作符:切片操作符的两个操作数是切片的起始索引和结束索引。如果没有显式使用,则两者都默认为序列的起止位置。我们可以利用这个功能。
>>> L1 = [1,2,3,4]
>>> L2 = L1[:]
>>> L1
[1, 2, 3, 4]
>>> L2
[1, 2, 3, 4]
>>> id(L1)
185117025160
>>> id(L2)
185117171592
另一种方法是使用内置的list()方法。
>>> L1 =[ 1,2,3,4]
>>> L2 = list(L1)
>>> L1
[1, 2, 3, 4]
>>> L2
[1, 2, 3, 4]
>>> id(L1)
185117295816
>>> id(L2)
185117209352
Python标准库的copy模块包含了用于浅拷贝和深拷贝对象的函数。深拷贝是嵌套拷贝,浅拷贝中,内部列表只被引用复制。
>>> import copy
>>> L1 = [1,2,3,4]
>>> L2 = copy.copy(L1)
>>> L1
[1, 2, 3, 4]
>>> L2
[1, 2, 3, 4]
>>> id(L1)
185117025160
>>> id(L2)
185117295880
>>> L3=copy.deepcopy(L1)
>>> L3
[1, 2, 3, 4]
>>> id(L3)
185117304328
阅读更多:Python 教程