聊聊Python中關(guān)于a=[[]]*3的反思
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中開辟三份地址,且地址相同。
2、
重新對(duì)a[0]賦值,故a[0]地址改變
3、
對(duì)a[0][0]賦值,即改變a[0],a[1],a[2]指向的地址里的內(nèi)容
注: .append\+=\-=等都不會(huì)重新賦地址,=會(huì)重新賦地址 故而,下面兩條語句都會(huì)出現(xiàn)問題:
在上述278、280兩行的語句中,我都用到了[[]]*len(spts),所以只要其中某一個(gè)[]之后有.append或+=或其它不重新指向地址的行為,另外兩個(gè)元素也會(huì)跟著改變。
Python a, b = b, a +b [Python3常見問題]
閱讀文檔發(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 ... 1 1 2 3 5 8
他實(shí)際上就是:
c = a + b a = b b = c
其他應(yīng)用
1. 交換
a, b = 0, 1 a, 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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python控制臺(tái)輸出俄羅斯方塊移動(dòng)和旋轉(zhuǎn)功能
這篇文章主要介紹了Python控制臺(tái)輸出俄羅斯方塊移動(dòng)和旋轉(zhuǎn)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Python使用Pygame實(shí)現(xiàn)時(shí)鐘效果
這篇文章主要為大家詳細(xì)介紹了Python使用Pygame實(shí)現(xiàn)時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Pandas實(shí)現(xiàn)解析JSON數(shù)據(jù)與導(dǎo)出的示例詳解
其實(shí)使用pandas解析JSON?Dataset要方便得多,所以這篇文章主要為大家介紹了Pandas實(shí)現(xiàn)解析JSON數(shù)據(jù)與導(dǎo)出的具體方法,需要的小伙伴可以收藏一下2023-07-07python查詢MySQL將數(shù)據(jù)寫入Excel
這篇文章主要介紹了python如何查詢MySQL將數(shù)據(jù)寫入Excel,幫助大家利用python高效的辦公,感興趣的朋友可以了解下2020-10-10Win11平臺(tái)安裝和配置NeoVim0.8.2編輯器搭建Python3開發(fā)環(huán)境詳細(xì)過程(2023最新攻略)
這篇文章主要介紹了Win11平臺(tái)安裝和配置NeoVim0.8.2編輯器搭建Python3開發(fā)環(huán)境(2023最新攻略),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01