本文實(shí)例講述了python復(fù)制與引用用法。分享給大家供大家參考。具體分析如下:
簡單復(fù)制是引用
a=[1,23,4]b=a #這是引用b.append(2323)print(a,b) #([1, 23, 4, 2323], [1, 23, 4, 2323])
使用copy.copy進(jìn)行淺拷貝
import copyc=copy.copy(b)#拷貝c.append(1)print(b,c)#([1, 23, 4, 2323], [1, 23, 4, 2323, 1])list1=[['a'],[1,2,4],[23,'a']]list_copy=copy.copy(list1)#淺拷貝,生成了一個新對象,但是新對象內(nèi)的屬性和內(nèi)容仍然是原對象的引用#當(dāng)對新對象進(jìn)行整體修改的時候修改的是本身list_copy.append('append')print(list_copy)#[['a'], [1, 2, 4], [23, 'a'], 'append']print(list1)#[['a'], [1, 2, 4], [23, 'a']]#當(dāng)對新對象的內(nèi)容進(jìn)行修改的時候修改的是原對象,因?yàn)樗匀皇且胠ist_copy[1].append('append+')print(list_copy)#[['a'], [1, 2, 4, 'append+'], [23, 'a'], 'append']print(list1)#[['a'], [1, 2, 4, 'append+'], [23, 'a']]使用copy.deepcopy進(jìn)行迭代拷貝,之后就可以更改新對象的屬性而不影響原對象了,只是效率會下降和內(nèi)存占有量會上升。
對于list,dict,set等可直接使用x(object),object為相應(yīng)類型,進(jìn)行拷貝,這是最簡單最直接有效地方式。
希望本文所述對大家的Python程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選