聊聊Python中關(guān)于a=[[]]*3的反思
之前用python做了一個(gè)關(guān)于交通大數(shù)據(jù)的項(xiàng)目,由于之前比較趕進(jìn)度,故現(xiàn)在會(huì)陸續(xù)更新對(duì)項(xiàng)目代碼的一些反思。
1、
由此可以看出,a[0],a[1],a[2]指向的是同一個(gè)元素,[[]]*3表示在a中開(kāi)辟三份地址,且地址相同。
2、
重新對(duì)a[0]賦值,故a[0]地址改變
3、
對(duì)a[0][0]賦值,即改變a[0],a[1],a[2]指向的地址里的內(nèi)容
注: .append+=-=等都不會(huì)重新賦地址,=會(huì)重新賦地址 故而,下面兩條語(yǔ)句都會(huì)出現(xiàn)問(wèn)題:
在上述278、280兩行的語(yǔ)句中,我都用到了[[]]*len(spts),所以只要其中某一個(gè)[]之后有.append或+=或其它不重新指向地址的行為,另外兩個(gè)元素也會(huì)跟著改變。
Python a, b = b, a +b [Python3常見(jiàn)問(wèn)題]閱讀文檔發(fā)現(xiàn)的。
>>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112358
他實(shí)際上就是:
c = a + ba = bb = c其他應(yīng)用
1. 交換
a, b = 0, 1a, b = b, a
評(píng)價(jià):省去了temp中間變量
2. 斐波那契
>>> a, b = 0, 1>>> while b < 1000:... print(b, end=’,’)... a, b = b, a+b...1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
評(píng)價(jià):比起數(shù)組的,遞歸的,確實(shí)簡(jiǎn)潔
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 用xslt+css讓RSS顯示的跟網(wǎng)頁(yè)一樣漂亮2. 利用CSS制作3D動(dòng)畫(huà)3. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫(huà)特效4. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁(yè)的方法5. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼6. HTML5 Canvas繪制圖形從入門(mén)到精通7. 讀大數(shù)據(jù)量的XML文件的讀取問(wèn)題8. html5手機(jī)觸屏touch事件介紹9. 讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例10. 《CSS3實(shí)戰(zhàn)》筆記--漸變?cè)O(shè)計(jì)(一)
