淺談python連續(xù)賦值可能引發(fā)的錯(cuò)誤
今天寫的代碼片段:
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 + 1 W = [20,15] a = 10 func(W,a) print W,a
li和num也是淺拷貝的方式,但是在num = num + 1這一句中,num改變了其引用對(duì)象,因此不會(huì)改變其外界的值,而W會(huì)增加一個(gè)值。
以上這篇淺談python連續(xù)賦值可能引發(fā)的錯(cuò)誤就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python SELENIUM上傳文件或圖片實(shí)現(xiàn)過程
這篇文章主要介紹了Python SELENIUM上傳文件或圖片實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
python實(shí)現(xiàn)封裝得到virustotal掃描結(jié)果
這篇文章主要介紹了python實(shí)現(xiàn)封裝得到virustotal掃描結(jié)果的方法,是比較實(shí)用的技巧,可將掃描結(jié)果寫入數(shù)據(jù)庫,需要的朋友可以參考下2014-10-10
Windows中安裝使用Virtualenv來創(chuàng)建獨(dú)立Python環(huán)境
有時(shí)我們的程序中需要調(diào)用不同版本的Python包和模塊,那么借助Virtualenv的虛擬環(huán)境就可以幫助我們隔離使用,接下來我們就來看一下在Windows中安裝使用Virtualenv來創(chuàng)建獨(dú)立Python環(huán)境的方法2016-05-05
Python基礎(chǔ)之變量基本用法與進(jìn)階詳解
這篇文章主要介紹了Python基礎(chǔ)之變量基本用法與進(jìn)階,結(jié)合實(shí)例形式詳細(xì)分析了Python變量引用、可變和不可變類型、局部變量和全局變量等相關(guān)原理與使用技巧,需要的朋友可以參考下2020-01-01

