##### 淺拷貝 copy()和深拷貝deepcopy()
先來看一組賦值 復制的例子 \# 賦值得到的復制結果是同一個對象,同一塊內存地址
\>>> a=5
\>>> id(a)
1357604080
\>>> b=a
\>>> b
5
\>>> id(b)
1357604080
\>>>
\>>> ad={"hello":"world"} \#copy不適用與int 和 str類型,是否僅僅適用于字典類型還待驗證
\>>> bd=ad
\>>> id(ad)
57487792
\>>> id(bd)
57487792 \# 可得出 ,bd,ad引用了同一個內存對象
\>>> cd=ad.copy()
\>>> id(cd) \#經過copy后的cd的內存地址發生改變
55731856
\>>>
\>>> bd\["hello"\]="tom"
\>>> bd
{'hello': 'tom'}
\>>> ad
{'hello': 'tom'} \#由于bd,ad是同一塊內存對象,所以修改bd的值,ad會隨之改變
\>>> cd
{'hello': 'world'} #由于cd是拷貝過來的,所以ad改變 cd不會變
\>>>
\>>> x={"name":"tom","ages":\["22","23","25"\]}
\>>> y=x.copy()
\>>> y
{'name': 'tom', 'ages': \['22', '23', '25'\]}
\>>> id(x)
56675088
\>>> id(y)
55732000
驚奇的一幕: 刪掉y中列表ages中的一個元素,x中的值會變化,雖然他們不是同一個內存對象
\>>> y\["ages"\].remove("25")
\>>> y
{'name': 'tom', 'ages': \['22', '23'\]}
\>>> x
{'name': 'tom', 'ages': \['22', '23'\]}
\>>>
但是,修改字符串內容,x 和y 卻互不影響,
\>>> y
{'name': 'tom', 'ages': \['22', '23'\]}
\>>> x
{'name': 'tom', 'ages': \['22', '23'\]}
\>>> y\["name"\]="jarry"
\>>> y
{'name': 'jarry', 'ages': \['22', '23'\]}
\>>> x
{'name': 'tom', 'ages': \['22', '23'\]}
\>>>
結論是: 同一個列表是同一個對象,修改就會發生變化
deepcopy() #使用時要先導入 copy模塊
\>>> import copy
\>>> z=copy.deepcopy(x)
\>>> z
{'name': 'tom', 'ages': \['22', '23'\]}
\>>> id(x)
56675088
\>>> id(y)
55732000
\>>> id(z)
57488176
\>>>
\>>> x\["ages"\].remove("23")
\>>> x
{'name': 'tom', 'ages': \['22'\]}
\>>> y
{'name': 'jarry', 'ages': \['22'\]}
\>>> z
{'name': 'tom', 'ages': \['22', '23'\]} \#z沒有隨著x的變化而變化,即所謂的深拷貝
\>>>
##### clear
\>>> h=copy.deepcopy(x)
\>>> h
{'name': 'tom', 'ages': \['22'\]}
\>>> h.clear() \#將字典中所有元素清空
\>>> h
{}
\>>>
(11) **集合**
如果說,元組tuple是列表和字符串的雜合,那么集合set就是list和dict的雜合
\>>> s=set("hello")
\>>> s
{'e', 'l', 'o', 'h'} \#集合中的元素不能重復
\>>>
\>>> s2={123,"hello",123,"124"}
\>>> s3=set(s2)
\>>> s3
{123, 'hello', '124'}
\>>>