浅拷贝
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。大白话就是,只copy一层,再深一层没copy还是指向同一对象(地址)。
>>>a = [[1], 2, 3]
>>> b = a.copy()
>>> a, b
([[1], 2, 3], [[1], 2, 3])
>>> a.append(4)
>>> a, b
([[1], 2, 3, 4], [[1], 2, 3])
>>> a[0].append(4)
>>> a, b
([[1, 4], 2, 3, 4], [[1, 4], 2, 3])
浅拷贝有三种形式:切片操作,工厂函数,copy模块中的copy函数。
#切片操作属于浅拷贝,所以我们在初始化列表时,一维列表可以采用此种方式初始化,而二维列表就不可以了!
lst1 = lst[:]
lst1 = [each for each in lst]
#工厂函数
lst1 = list(lst)
#copy()函数如上所示
深拷贝
深度拷贝需要引入 copy 模块:
>>>import copy
>>>a = [[1], 2, 3]
>>> b = copy.deepcopy(a)
>>> a, b
([[1], 2, 3], [[1], 2, 3])
>>> a.append(4)
>>> a, b
([[1], 2, 3, 4], [[1], 2, 3])
>>> a[0].append(4)
>>> a, b
([[1, 4], 2, 3, 4], [[1], 2, 3])