今天寫的代碼片段:
X = Y = []..X.append(x)Y.append(y)
其中x和y是讀取的每一個(gè)數(shù)據(jù)的xy值,打算將其歸入列表之后繪散點(diǎn)圖,但是繪圖出來卻是一條直線,數(shù)據(jù)本身并不是這樣分布的。
反復(fù)檢查后,發(fā)現(xiàn)是X = Y =[]這一句的錯(cuò)誤。
在python中,形如X = Y的拷貝都是淺拷貝,X和Y是公用同一塊空間的,一旦對(duì)它們其中的任意一個(gè)進(jìn)行數(shù)據(jù)操作,都會(huì)改變?cè)摽臻g的內(nèi)容,除非重新賦一塊空間,改變其指向的位置。
因此只需要改成:
X = []Y = []
就可以運(yùn)行正確了。
拓展寬一點(diǎn)思考,對(duì)于函數(shù)來說:
def func(li,num): li.append(12) num = num + 1W = [20,15]a = 10func(W,a)print W,a
li和num也是淺拷貝的方式,但是在num = num + 1這一句中,num改變了其引用對(duì)象,因此不會(huì)改變其外界的值,而W會(huì)增加一個(gè)值。
以上這篇淺談python連續(xù)賦值可能引發(fā)的錯(cuò)誤就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長站。
新聞熱點(diǎn)
疑難解答
圖片精選