一個值 | 多個值 |
---|---|
整型/浮點型/字符串 | 列表/字典/元祖/集合 |
有序 | 無序 |
---|---|
字符串/列表/元祖 | 字典/集合 |
可變 | 不可變 |
---|---|
列表/字典/集合 | 整型/浮點型/字符串 |
l1 = ['a','b','c',['d','e','f']] l2 = l1 l1.append('g') print(l1) # ['a','b','c',['d','e','f'],'g'] print(l2) # ['a','b','c',['d','e','f'],'g']
總結:若是l2是l1的拷貝對象,若l1內部的任意數據類型的元素變化,則l2內部的元素也會跟着改變,由於可變類型,值變id不變.app
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'] l1[3].append('g') print(l1) # ['a','b','c'['d','e','f','g'],'g'] print(l2) # ['a','b','c'['d','e','f','g']]
總結:若是l2是l1的淺拷貝對象,若l1內的不可變元素髮生了改變,l2不變;若是l1內的可變元素髮生了改變,則l2也會跟着改變.code
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']]
總結:若是l2是l1的深拷貝對象,若l1內的不可變類型元素髮生改過,l2不會變;若是l1內的可變類型元素髮生了變化,l2也不會改變,即l2永遠不會由於l1的變化而變化.對象