若是l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,由于可变类型值变id不变。python
原对象任何元素变化,拷贝对象随之变化,这种现象为拷贝.用=来实现.app
l1 = ['a', 'b', 'c', ['d', 'e', 'f']] l2 = l1 l1.append('g') print(l1)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
code
print(l2)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
对象
若是l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;若是l1内的可变元素发生了改变,则l2会跟着改变。class
原对象不可变类型元素变化拷贝对象不变化,可是可变类型类型变化,拷贝对象也随之改变,这种为浅拷贝.用copy.copy()实现import
import copy l1 = ['a', 'b', 'c', ['d', 'e', 'f']] l2 = copy.copy(l1) l1.append('g') print(l1)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
数据类型
print(l2)
['a', 'b', 'c', ['d', 'e', 'f']]
im
l1[3].append('g') print(l1)
['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
数据
print(l2)
['a', 'b', 'c', ['d', 'e', 'f', 'g']]
img
若是l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;若是l1内的可变元素发生了改变,l2也不会变,即l2永远不会由于l1的变化而变化。
原对象不管什么类型的元素改变都不会影响拷贝类型的元素,这个就必然是一个深拷贝.用copy.deepcopy()实现
import copy l1 = ['a', 'b', 'c', ['d', 'e', 'f']] l2 = copy.deepcopy(l1) l1.append('g') print(l1)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
print(l2)
['a', 'b', 'c', ['d', 'e', 'f']]
l1[3].append('g') print(l1)
['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
print(l2)
['a', 'b', 'c', ['d', 'e', 'f']]