Python 拷貝,字典

2021-08-18 11:39:14 字數 2293 閱讀 9917

深淺拷貝:

淺拷貝:

拷貝到最外層:直接賦值、切片賦值

>>> 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如果有多個元素,可以使用 來拆包,乙個字母代表乙個,查表後的型...