本文實例講述了python復制與引用用法。分享給大家供大家參考。具體分析如下:
簡單復制是引用
1
2
3
4
|
a = [ 1 , 23 , 4 ] b = a #這是引用 b.append( 2323 ) print (a,b) #([1, 23, 4, 2323], [1, 23, 4, 2323]) |
使用copy.copy進行淺拷貝
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import copy c = 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) #淺拷貝,生成了一個新對象,但是新對象內的屬性和內容仍然是原對象的引用 #當對新對象進行整體修改的時候修改的是本身 list_copy.append( 'append' ) print (list_copy) #[['a'], [1, 2, 4], [23, 'a'], 'append'] print (list1) #[['a'], [1, 2, 4], [23, 'a']] #當對新對象的內容進行修改的時候修改的是原對象,因為它仍然是引用 list_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進行迭代拷貝,之后就可以更改新對象的屬性而不影響原對象了,只是效率會下降和內存占有量會上升。
對于list,dict,set等可直接使用x(object),object為相應類型,進行拷貝,這是最簡單最直接有效地方式。
希望本文所述對大家的Python程序設計有所幫助。