0.
序列指什麼?
序列型別是指容器內的元素從0開始的索引順序訪問,一次可以訪問乙個或者多個元素,包括字串(string)、元組(tuple)、列表(list):
the difference between tuple and list:
tuple would not be changed, but list would.
>>> a = (1,2,3)
>>> b = [1,2,3]
traceback (most recent call last):
1.什麼是拷貝?
copy操作意味著兩個在記憶體中不同的物件,所以對應的id也是不一樣的。
>>> ls1 = [1,2,3]為什麼tuple的id沒有變化而list的tuple發生了變化了呢?這個是由於python直譯器的實現導致的,由於tuple是immutable的,所以說沒有必要在記憶體裡維護多個一樣字面意義的tuple,因此python對於tuple的copy操作,實際上是增加了乙個reference count而已,並沒有做真正的copy,所以id的返回值是一樣的。>>> ls2 = ls1[:]
>>> id(ls1),id(ls2)
(140439195044104, 140439195058760)
>>> tp1 = (1,2,3)
>>> tp2 = ls1[:]
>>> id(tp1),id(tp2)
(140439194958816, 140439194958816)
這是淺拷貝還是深拷貝?
一般以下所得到的都是淺拷貝:
2.什麼是淺拷貝?
淺拷貝是指當序列中包含容器時,拷貝後新序列的容器只是原序列容器的引用
>>> a = (1,3,5,[2,4])
>>> b = a[:]
>>> a,b
((1, 3, 5, [2, 4, 6]), (1, 3, 5, [2, 4, 6]))
3.什麼是深拷貝?
深拷貝是指拷貝後序列中的容器也拷貝過去,而不存在引用關係。
>>> c = copy.deepcopy(a)
>>> a,c
((1, 3, 5, [2, 4, 6]), (1, 3, 5, [2, 4, 6, 8]))
4.總結:
考察是不是淺拷貝的方法是兩者的容器是否指向同乙個位址。
python中淺拷貝與深拷貝
淺拷貝,拷貝的是父物件,不會拷貝到內部的子物件。單從乙個淺字就可以看出他拷貝的東西不深,可以理解為只拷貝一層 import copy a 1,ss 2,3 b copy.copy a print b print id a print id b 現在有乙個列表a裡面有數字,字串,列表和字典 用淺拷貝的...
Python中的淺拷貝與深拷貝
1.淺拷貝 情況1的例項如下 import copy a 1,2 b 3,4 c a,b 注意這裡的c就是乙個可變物件!d copy.copy c print 變數c c print print 變數d d 結果 變數c 1,2 3,4 變數d 1,2 3,4 原因分析 需要拷貝的物件c是乙個lis...
python中的深拷貝與淺拷貝
在python中拷貝預設為淺拷貝,因為占用時間和記憶體交少 淺拷貝 num list1 1 2,3 1,2,3 4,5 6,7 8,9 num list2 num list1.copy print before print num list1 print num list2 num list2 2 ...