Python 關于a=[[]]*3的反思
之前用python做了一個關于交通大數據的項目,由于之前比較趕進度,故現在會陸續(xù)更新對項目代碼的一些反思。
1、

由此可以看出,a[0],a[1],a[2]指向的是同一個元素,[[]]*3表示在a中開辟三份地址,且地址相同。
2、

重新對a[0]賦值,故a[0]地址改變
3、

對a[0][0]賦值,即改變a[0],a[1],a[2]指向的地址里的內容
注: .append\+=\-=等都不會重新賦地址,=會重新賦地址 故而,下面兩條語句都會出現問題:

在上述278、280兩行的語句中,我都用到了[[]]*len(spts),所以只要其中某一個[]之后有.append或+=或其它不重新指向地址的行為,另外兩個元素也會跟著改變。
Python a, b = b, a +b [Python3常見問題]
閱讀文檔發(fā)現的。
>>> # 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
他實際上就是:
其他應用
1. 交換
評價:省去了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,
評價:比起數組的,遞歸的,確實簡潔
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 關于Python的一些學習總結
- python3編碼問題匯總
- 解決Python3中的中文字符編碼的問題
- python [:3] 實現提取數組中的數