python 列表和字典的引用與複製 copy

2022-07-20 19:06:12 字數 1593 閱讀 6810

列表或字典的引用:

引用針對變數的時候,傳遞引用後,對引用後的物件的值進行改變是不會影響到原值的;而列表不一樣如:

spam =42

cheese = spam

spam =100

print(spam)      #out:100

print(cheese)   #out:42

如果對列表進行引用會是什麼情況呢,我們來看看

spam = [0,1,2,3,4,5]

cheese = spam

print(spam)

cheese[1] = 'hello'

print(spam)

print(cheese)

out:

[0, 1, 2, 3, 4, 5]

[0, 'hello', 2, 3, 4, 5]

[0, 'hello', 2, 3, 4, 5]

結果我們發現cheese 是引用的spam的,我們改變cheese之後 spam的值也跟著改變了;這個就跟我們當初學的c語言一樣;列表的引用其實就是相當於把前面乙個列表的位址同時給了乙個新的列表用。結果這兩個列表都指向了同一位址而這個位址裡面本身就只能存放一組資料,不管是對這兩個列表誰進行操作都會把這個位址中的資料重新更新;也因此列表可以用來形參的傳遞來改變實參的值,而變數不同,變數的形參傳遞是不會改變實參的值的;

def trees(somename):

somename+='hello'

print('形參值:'+somename)

spam = [0,1,2,3]

treename = '梧桐'

eggs(spam)

trees(treename)

print(spam)

print('實參值:'+treename)

out:

形參值:梧桐hello

[0, 1, 2, 3, 'hello']

實參值:梧桐

列表或字典的複製

在處理列表和字典時,儘管傳遞引用常常是最方便的方法,但如果函式修改了傳入的列表和字典,你可能不希望這些變動影響到原來的列表或字典。要做到這一點,python提供了copy的模組,其中包含copy()和deepcopy()函式。第乙個函式copy.copy(),可以用來複製列表或字典這樣的可變值,而不是複製引用.注意這需要用到copy模組,因此要import copy

如上示例做些許更改所示:

import copy

spam = [0,1,2,3,4,5]

cheese = copy.copy(spam)

print(spam)

cheese[1] = 'hello'

print(spam)

print(cheese)

out:

[0, 1, 2, 3, 4, 5]

[0, 1, 2, 3, 4, 5]

[0, 'hello', 2, 3, 4, 5]

python的列表 元組與字典

python支援一種資料結構的基本概念,即容器 container 容器基本上就是包含其他物件的物件。兩種主要的容器就是序列 如列表和元組 與對映 如字典 在序列中,每個元素都有編號,這個編號我們也可以稱之為索引,從0開始遞增。而在對映中,每個元素都有名稱 也叫做鍵 列表的特點就是可以修改,而且列表...

Python中的列表與字典

1,列表 由一系列按特定順序排列的元素組成。你可以建立包含字母表中所有字母 數字0 9或所有家庭成員姓名的列表 也可以將任何東西加入列表中,其中的元素之間可以沒有 任何關係。鑑於列表通常包含多個元素,給列表指定乙個表示複數的名稱 如letters digits 或names 是個不錯的主意。在pyt...

python 列表與字典轉換

在寫爬蟲的時候,經常需要處理cookie,requests庫里的cookie是dict,但是headers cookie 卻是乙個key value的字串。coding utf 8 import logging key value列表轉換成cookie字典 defcookie list 2 dict...