淺談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是公用同一塊空間的,一旦對它們其中的任意一個(gè)進(jìn)行數(shù)據(jù)操作,都會(huì)改變該空間的內(nèi)容,除非重新賦一塊空間,改變其指向的位置。
因此只需要改成:
X = [] Y = []
就可以運(yùn)行正確了。
拓展寬一點(diǎn)思考,對于函數(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改變了其引用對象,因此不會(huì)改變其外界的值,而W會(huì)增加一個(gè)值。
以上這篇淺談python連續(xù)賦值可能引發(fā)的錯(cuò)誤就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python?使用?pip?安裝?matplotlib?模塊的方法
matplotlib是python中強(qiáng)大的畫圖模塊,這篇文章主要介紹了Python?使用?pip?安裝?matplotlib?模塊(秒解版),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02如何使用Python的Requests包實(shí)現(xiàn)模擬登陸
這篇文章主要為大家詳細(xì)介紹了使用Python的Requests包模擬登陸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Python求兩點(diǎn)之間的直線距離(2種實(shí)現(xiàn)方法)
今天小編就為大家分享一篇Python求兩點(diǎn)之間的直線距離(2種實(shí)現(xiàn)方法),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python新手學(xué)習(xí)過程記錄之基礎(chǔ)環(huán)境:環(huán)境變量、版本區(qū)分、虛擬環(huán)境
剛開始接觸Python開發(fā)語言,可能就會(huì)遇到一些棘手的問題,比如電腦上不知不覺已經(jīng)安裝了多個(gè)python版本,python3.8/3.10/3.11,甚至一些軟件中也集成有python解釋器;那么我編寫的python代碼,到底是使用哪個(gè)解釋器在執(zhí)行?我通過pip包管理工具安裝的依賴包到底在那個(gè)地方2024-05-05