09.复制
在处理列表和字典时,尽管传递引用常常是最方便的方法,但是如果函数修改了传入的列表或字典,我们可能不希望这些变动影响到原来的列表和字典。这时可以采用python中提供的copy模块,copy模块中有copy()和deepcopy()函数。
copy.copy()函数可以用来复制列表或字典的可变值,只能进行深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
>>> spam = ['a','b','c','d']
>>> cheese = copy.copy(spam)
>>> cheese[1] = 42
>>> cheese
['a', 42, 'c', 'd']
>>> spam
['a', 'b', 'c', 'd']
>>> spam = [1,2,3,[4,5]]
>>> cheese = copy.copy(spam)
>>> cheese[3]
[4, 5]
>>> cheese[3].append(6)
>>> spam
[1, 2, 3, [4, 5, 6]]
如果要复制的列表中包含了列表,这时就要使用copy.deepcopy()函数
copy.deepcopy():完全的深拷贝
>>> a = [1,2,3,[4,5]]
>>> b = copy.deepcopy(a)
>>> a
[1, 2, 3, [4, 5]]
>>> b
[1, 2, 3, [4, 5]]
>>> b.append(1)
>>> a
[1, 2, 3, [4, 5]]
>>> b
[1, 2, 3, [4, 5], 1]
>>> b[3].append(6)
>>> a
[1, 2, 3, [4, 5]]
>>> b
[1, 2, 3, [4, 5, 6], 1]
最后更新于
这有帮助吗?