深淺拷貝:
淺拷貝:
拷貝到最外層:直接賦值、切片賦值
>>> list_1 = [1,2,3,4]
>>> list_2 = list_1
>>> list_2
[1, 2, 3, 4]
>>> list_1[1] = 'a'
>>> list_1
[1, 'a', 3, 4]
>>> list_2
[1, 'a', 3, 4]
>>> list_3 = [1,2,3,['a','b']]
>>> list_4 = list_3[:]
>>> list_4
[1, 2, 3, ['a', 'b']]
>>> list_3[0] = 'c'
>>> list_3
['c', 2, 3, ['a', 'b']]
>>> list_4
[1, 2, 3, ['a', 'b']]
>>> list_3[3][1] = 'ww'
>>> list_3
['c', 2, 3, ['a', 'ww']]
>>> list_4
[1, 2, 3, ['a', 'ww']]
深拷貝:
由外到內全部拷貝
>>> import copy
>>> list_5 = copy.deepcopy(list_3)
>>> list_5
['c', 2, 3, ['a', 'ww']]
>>> list_5[3][0] = 99
>>> list_3
['c', 2, 3, ['a', 'ww']]
>>> list_5
['c', 2, 3, [99, 'ww']]
字典:
字典以鍵值對形式存在:
key值會進行hash運算,生成hash表,所以字典的訪問效率要優於普通序列資料型別(列表,元組)
key值由於需要通過hash,所以一些可變的資料型別不可以做key值,而value值沒有限制,可以是任意資料型別
由於進行了hash運算,所以字典在記憶體中的儲存是無序的,不能進行索引和切片之類的有序操作
字典是可變的資料型別
建立方式:
大括號包裹鍵值對:
>>> mydict =
>>> mydict
>>> mydict[1]
'a'
2.工廠方法建立:
>>> mydict_1 = dict(([1,'a'],[2,'b']))
>>> mydict_1[1]
'a'
>>> mydict_1
3.字典內建方式,這是批量建立key值,但是不能單獨分配value值
>>> mydict_2 = dict.fromkeys([1,2,3,4,5],'a')
>>> mydict_2
訪問字典:
獲得所有的key值:dict.keys()
>>> mydict_2.keys()
dict_keys([1, 2, 3, 4, 5])
獲得所有的value值:dict.values()
>>> mydict_2.values()
dict_values(['a', 'a', 'a', 'a', 'a'])
通過key值獲取value:dict[key]
>>> mydict_2[2]
'a'
迭代獲取其中的key值或value值
>>> for var in mydict_2.keys():
... print(var)
...123
45>>>
>>> for var in mydict_2:
... print(var)
...123
45>>> for var in mydict_2.values():
... print(var)
...aaa
aa>>> for var in mydict_2:
... print(mydict_2[var])
...aaa
aa
Python字典使用時,拷貝情況
python dict內中,value採用的是潛拷貝的形式,持有物件 也就是只有物件的引用,但不拷貝乙份到記憶體中 class user def init self,name,info self.name name self.info info def str self return name s ...
python基礎 列表拷貝操作和字典操作
1 淺拷貝 只拷貝一級,其他的層級沿用以前的資料 lst 1,2,3 方法一.列表.copy lst2 lst.copy 深拷貝語法 lst 1,2,3,4,5,6 lst2 copy.deepcopy lst lst 1 insert 1,888 print lst print lst2 查 ge...
元組和字典,深拷貝和淺拷貝
元組是不可變資料型別 建立乙個元組 tuple1 1 2,3 11,22 33 元組也可以切片 如果元組不是乙個空元組,那裡邊必須有逗號 a 10 元組的拆包 tuple1 1 2 a,b tuple print a,b 檢視結果 1 2如果有多個元素,可以使用 來拆包,乙個字母代表乙個,查表後的型...