概念
- 浅拷贝:浅拷贝相当于拷贝了原始变量的引用
- 深拷贝:递归拷贝列表值,整个数据结构的数据,全部拷贝一份
浅拷贝示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import copy
if __name__ == '__main__':
letters = ["a", "b", ["c", "d"]]
letters_copy = letters.copy()
print("字母列表:%s" % letters)
print("浅拷贝_字母列表:%s" % letters_copy)
print("---------------------------------")
letters_copy.append("e")
print("字母列表:%s" % letters)
print("浅拷贝_字母列表:%s" % letters_copy)
print("---------------------------------")
letters_copy[-2].append("f")
print("字母列表:%s" % letters)
print("浅拷贝_字母列表:%s" % letters_copy)
print("---------------------------------")
letters_copy[0] = "k"
print("字母列表:%s" % letters)
print("浅拷贝_字母列表:%s" % letters_copy)
# 输出
字母列表:['a', 'b', ['c', 'd']]
浅拷贝_字母列表:['a', 'b', ['c', 'd']]
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
浅拷贝_字母列表:['a', 'b', ['c', 'd'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd', 'f']]
浅拷贝_字母列表:['a', 'b', ['c', 'd', 'f'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd', 'f']]
浅拷贝_字母列表:['k', 'b', ['c', 'd', 'f'], 'e']
深拷贝
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import copy
if __name__ == '__main__':
letters = ["a", "b", ["c", "d"]]
letters_deep_copy = copy.deepcopy(letters)
print("字母列表:%s" % letters)
print("深拷贝_字母列表:%s" % letters_deep_copy)
print("---------------------------------")
letters_deep_copy.append("e")
print("字母列表:%s" % letters)
print("深拷贝_字母列表:%s" % letters_deep_copy)
print("---------------------------------")
letters_deep_copy[-2].append("f")
print("字母列表:%s" % letters)
print("深拷贝_字母列表:%s" % letters_deep_copy)
print("---------------------------------")
letters_deep_copy[0] = "k"
print("字母列表:%s" % letters)
print("深拷贝_字母列表:%s" % letters_deep_copy)
# 输出:
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['a', 'b', ['c', 'd']]
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['a', 'b', ['c', 'd'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['a', 'b', ['c', 'd', 'f'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['k', 'b', ['c', 'd', 'f'], 'e']
浅拷贝四种方式
letters = ["a", "b", ["c", "d"]]
letters_copy1 = copy.copy(letters)
letters_copy2 = letters[:]
letters_copy3 = list(letters)
letters_copy4 = letters.copy()