python怎么查看列表_Python 小白,关于对于列表的+=操作不明白,查了半天也不知道怎么查,并且查询无果,请人指点?...
這兩題涉及兩個(gè)概念:賦值過(guò)程中的淺復(fù)制 VS. 深復(fù)制
修改自身的操作 VS. 返回新值的操作
x 是個(gè)列表,用Python的話說(shuō),屬于引用類型,它本身是一個(gè)指向底層數(shù)據(jù)結(jié)構(gòu)的引用,賦值給 y 時(shí),傳遞的是這個(gè)引用,因此,y 和 x 等于共享了底層數(shù)據(jù)結(jié)構(gòu)。我們把這種情況叫淺復(fù)制。
比如說(shuō),我們改一下 y 的值,x 的值也會(huì)受影響。y[0]=2
x
[2,2]
與之對(duì)應(yīng)的是深復(fù)制,對(duì)于Python中的值類型,比如數(shù)值、字符串等,賦值的時(shí)候會(huì)直接復(fù)制一份底層數(shù)據(jù),互相之間就不會(huì)受影響了。x=1
y=x
y=2
y
2
x
1
除了賦值過(guò)程,深復(fù)制與淺復(fù)制更需要注意的是函數(shù)傳參的過(guò)程。傳遞一個(gè)引用對(duì)象作為參數(shù),有可能會(huì)在函數(shù)運(yùn)算時(shí)改變?cè)瓕?duì)象狀態(tài),導(dǎo)致一些不好排查的bug。想要更詳細(xì)的了解,可以搜索相關(guān)關(guān)鍵詞。
第二個(gè)概念是修改自身的操作與返回新對(duì)象的操作。
同樣是擴(kuò)展列表,這兩題結(jié)果不一樣,是因?yàn)?+= 號(hào)是修改自身的操作,這個(gè)操作等于是在 y 后面新增了兩個(gè)元素,上面說(shuō)過(guò),x 和 y 在底層結(jié)構(gòu)上是同一個(gè),因此 x 就受影響了。
而另一題中,y=y+[3,4] 其實(shí)可以看成兩步,第一步是相加,得到一個(gè)新的列表 [1,2,3,4] ,第二步是把這個(gè)新列表賦值給 y,這個(gè)賦值過(guò)程,實(shí)際上是讓 y 指向了一個(gè)新的底層數(shù)據(jù)結(jié)構(gòu),和 x 指向的那個(gè)就區(qū)分開(kāi)來(lái)了。
當(dāng)然,需要指出的是,+= 其實(shí)也不是原子性的操作,不過(guò)這和這兩題沒(méi)什么關(guān)系,屬于比較深入的內(nèi)容,暫時(shí)可以不用關(guān)注。
搜索資料的問(wèn)題,第一步是打開(kāi)搜索引擎,第二步是輸入關(guān)鍵詞。了解一些基本概念之后,就知道該輸入什么關(guān)鍵詞了,不用著急。
怎么了解一些基本概念呢?還是推薦看一兩本比較經(jīng)典的書(shū),所謂磨刀不誤砍柴工。怎么知道哪些書(shū)比較經(jīng)典呢?參考上一段,這里就不推薦了。
祝順利!
總結(jié)
以上是生活随笔為你收集整理的python怎么查看列表_Python 小白,关于对于列表的+=操作不明白,查了半天也不知道怎么查,并且查询无果,请人指点?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python模拟登陆 验证码el_pyt
- 下一篇: 个人发卡网搭建源码_免费建设一个个人网站