Python中的引用與copy介紹
Python中的引用和copy
1、引用整型數(shù)據(jù)及列表
這里以整型數(shù)據(jù)類型及列表為例
對于賦值字符串、整型、元組等不可更改數(shù)據(jù)的變量,其保存的僅是值,改變新變量中的值并不會影響原來變量中的值
origin = 1
new = origin
print("new = ",new)
new = 2
print("origin = ",origin)
輸出結(jié)果:

如果將列表或者字典賦值給一個(gè)變量,(這里以列表為例)則變量所保存的并不是一個(gè)列表,而是原列表的引用,相當(dāng)于一個(gè)通向列表的通道,指向原列表(感覺類似于C語言中的指針)
origin = [1,2,3]
new = origin
print("new = ",new)
new[0] = 0
print("origin = ",origin)
輸出結(jié)果:

如上述示例程序,改變新變量對應(yīng)列表元素的值,原變量中列表元素的值相應(yīng)也改變了,這說明這兩個(gè)變量指向同一個(gè)列表,保存的是該列表的引用。
2、傳遞引用
作為傳遞給函數(shù)變量,其包含的值同樣為列表的引用。
def expand(transmit):
transmit.append('haha')
list = [1,2,3]
expand(list)
print(list)
輸出結(jié)果:

3、copy模塊中的copy()和deepcopy()
copy.copy()函數(shù)可以用來復(fù)制列表或字典這樣的可變值,復(fù)制后的列表與原列表為兩個(gè)獨(dú)立的列表
import copy
origin = [1,2,3]
new = copy.copy(origin)
new[0] = 0
print("origin = ",origin)
print("new = ",new)

如果所需要復(fù)制的列表中套有列表,則使用deepcopy()函數(shù)將其完整復(fù)制
import copy
origin =[[1,2,3],['a','b','c']]
new = copy.deepcopy(origin) #使用深copy
new[0][0] = 0
print("origin = ",origin)
print("new = ",new)
輸出結(jié)果:

注意:如果在嵌套列表的情況下使用copy.copy(),則無法將內(nèi)部列表復(fù)制出來
import copy
origin =[[1,2,3],['a','b','c']]
new = copy.copy(origin) #使用淺copy
new[0][0] = 0
print("origin = ",origin)
print("new = ",new)
輸出結(jié)果:

到此這篇關(guān)于Python中的引用與copy介紹的文章就介紹到這了,更多相關(guān)Python中的引用和copy內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)list由于numpy array的轉(zhuǎn)換
下面小編就為大家分享一篇python實(shí)現(xiàn)list由于numpy array的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Pandas數(shù)據(jù)集的合并與連接merge()方法
Pandas數(shù)據(jù)集的合并與連接(merge())是數(shù)據(jù)處理過程中常用的操作之一,在使用Pandas進(jìn)行數(shù)據(jù)集合并時(shí),可以使用merge()函數(shù)將兩個(gè)或多個(gè)數(shù)據(jù)集按照指定的列進(jìn)行合并,本文就來介紹一下,感興趣的可以了解一下2023-11-11
Python中比較特別的除法運(yùn)算和冪運(yùn)算介紹
這篇文章主要介紹了Python中比較特別的除法運(yùn)算和冪運(yùn)算介紹,“/”這個(gè)是除法運(yùn)算,那么這個(gè)“//”呢?“*”這個(gè)是乘法運(yùn)算,那么這個(gè)“**”呢?本文就講解這些運(yùn)算的不同,需要的朋友可以參考下2015-04-04
TensorFlow2.X結(jié)合OpenCV 實(shí)現(xiàn)手勢識別功能
這篇文章主要介紹了TensorFlow2.X結(jié)合OpenCV 實(shí)現(xiàn)手勢識別功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
pandas DataFrame 警告(SettingWithCopyWarning)的解決
這篇文章主要介紹了pandas DataFrame 警告(SettingWithCopyWarning)的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

