同一性和切片副本

2022-03-11 08:53:12 字數 1068 閱讀 3711

《python基礎教程(第2版)》中有兩個例子,可以解釋同一性和副本的有關概念,現舉例如下:

'''字串(以及數字和元組)是不可變的,即無法被修改(也就是說只能用新的值覆蓋)。所以它們做引數的時候也就無需多做介紹。但是考慮一下如果將可變的資料結構如列表用作引數的時候會發生什麼:

def

change(n):

n[0] = '

mr. gumby

'names = ['

mrs. entity

', '

mrs. thing']

change(names)

names['

mr. gumby

', '

mrs. thing

']

'''我們發現,引數被改變了,我們可以分析一下,為什麼引數會被改變:

n---------names--------列表['mrs. entity', 'mrs. thing']

其中names和n都同時引用了同乙個列表。那麼,n如果發生變化,names也勢必發生變化。

為了避免這種情況,我們可以複製乙個列表的副本:

def

change(n):

n[0] = '

mr. gumby

'names = ['

mrs. entity

', '

mrs. thing']

change(names[:])

names['

mrs. entity

', '

mrs. thing

']

>>> names[:] is

names

false

>>> names[:] ==names

true

n---------names[:]副本 <-----------names------------列表['mrs. entity', 'mrs. thing']

現在引數n對應的是乙個副本,而副本和names不同一,所以原始的列表是安全的。             

值相等 is同一性

是python標準操作符中的比較操作符,用來比較判斷兩個物件的value 值 是否相等,例如下面兩個字串間的比較 a iplaypython.com b iplaypython.com a b true is也被叫做同一性運算子,這個運算子比較判斷的是物件間的唯一身份標識,也就是id是否相同。通過對...

物件的同一性與相等性

物件的相等性很好理解,就是兩個物件完全一樣,但是物件的同一性可能就不是很好理解了。不多說廢話,直接上 static void main string args console.writeline p1 p3 console.writeline p1.equals p3 console.read 結果...

pandas numpy切片和副本

切片和副本的問題 pandas b a 檢視 修改檢視,原值一起改變 b a 檢視 修改檢視,原值一起改變 b a 列名1,列名2.副本,修改副本,原值不一起變,這種切片是pandas特有的,並且是副本 pandas奇葩方法,返回副本 b a.copy 副本 關於loc切片問題 知乎 numpy b...