1、简单理解:深复制就是为新变量开辟了新空间,只复制内容,当原内容改变时,新内容不跟着变。
浅复制是只是指向原变量,原变量内容变化时,新内容跟着变。
d = defaultdict(dict)
for i in range(1,20):
d[0][i] = i
d[1] = d[0] #浅复制,不论是d[1]还是d[0]变化另一个也都会变
for i in range(20,25):
d[1][i] = i
print(d)
输出:
defaultdict(<class 'dict'>,{0: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24}, 1: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24}})
2、不想让跟着变化:
import copy
d = defaultdict(dict)
for i in range(1,20):
d[0][i] = i
d[1] = copy.deepcopy(d[0])###这里是变化
for i in range(20,25):
d[1][i] = i
print(d)
输出:
defaultdict(<class 'dict'>, {0: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24}, 1: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19}})